2014-12-09 9 views
9

Próbuję utworzyć skrypt Python triviol, który pobierze dane z adresu URL i zapisze go na serwer. Concider kodu poniżej:Python: ImportError: /usr/local/lib/python2.7/lib-dynload/_io.so: niezdefiniowany symbol: PyUnicodeUCS2_Replace

#!/usr/bin/python 
import pprint 
import json 
import urllib2 

def getUSGS_json(): 
    print "Fetch data from URL" 

    fileName = 'data/usgsEarthquacks_12Hrs.json' 
    url = 'http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson' 
    data = urllib2.urlopen(url).read() 

    if data: 
     try: 
      with open(fileName) as jsonGetData: 
       filePut = open(fileName, 'w+') 
       #add data 
       filePut.write(data) 
       filePut.close() 

       j = json.load(jsonGetData) 
       print j 
     except Exception, e: 
      print e 
      raise 
     else: 
      pass 
     finally: 
      pass 
    #end if 
#end getUSGS_json 

getUSGS_json() 

Po uruchomieniu skryptu uzyskać następujące błędy:

Traceback (most recent call last): 
    File "geoJsonFetch.py", line 4, in <module> 
    import urllib2 
    File "/usr/local/lib/python2.7/urllib2.py", line 94, in <module> 
    import httplib 
    File "/usr/local/lib/python2.7/httplib.py", line 79, in <module> 
    import mimetools 
    File "/usr/local/lib/python2.7/mimetools.py", line 6, in <module> 
    import tempfile 
    File "/usr/local/lib/python2.7/tempfile.py", line 32, in <module> 
    import io as _io 
    File "/usr/local/lib/python2.7/io.py", line 51, in <module> 
    import _io 
ImportError: /usr/local/lib/python2.7/lib-dynload/_io.so: undefined symbol: PyUnicodeUCS2_Replace 

Mam rozejrzał się na SO i znalezione podobne błędy jak this one, ale nie wydaje się, aby w serce dlaczego niektórzy ludzie są w stanie uruchomić ten kod, a ja nie. Wygląda na to, że mają do czynienia z problemami dotyczącymi programowania w C i używania Pythona do dostępu do tego modułu C.

Czy to wersja Ubuntu, wersja Python ??

Dziękuję.

+1

nie powinieneś używać 'data = urllib2.urlopen (url) .read()'? –

+1

Wygląda na to, że masz wiele instalacji Pythona, które depczą sobie nawzajem. –

Odpowiedz

17

Masz (przynajmniej) dwie różne wersje zainstalowanego Pythona i miksujesz ich pliki. Upewnij się, że $PYTHONPATH, i i i tylko zawiera foldery dla pojedynczej instalacji Pythona. W twoim przypadku jedna instalacja jest w /usr/local, a druga jest prawdopodobnie w /usr.

Możesz także zainstalować virtualenvwrapper i skonfigurować osobne środowisko Pythona, aby złagodzić wszelkie konflikty. Here to samouczek dotyczący instalowania i używania virtualenv.

+1

Jak to zrobić dokładnie? Czy możesz rozwinąć nieco więcej? Dzięki. –

+1

Aby pomóc, potrzebuję wiedzieć, które wersje Pythona zainstalowałeś, jak je zainstalowałeś i jak uruchomić aplikację. Edytuj swoje pytanie, aby podać mi te informacje. –

+1

Nie ma potrzeby. Rozwiązanie Virtualenv działało dla mnie i wydaje się być lepszym sposobem robienia rzeczy idących dalej. Chciałbym mieć kciuk w górę, jeśli myślisz, że to pytanie może przynieść korzyści innym. Twoje zdrowie. –

Powiązane problemy