2014-12-09 5 views
9

Sto provando a creare uno script Python triviol che acquisirà i dati dall'URL e li salverà sul server. Considerate questo il codice qui sotto:Python: ImportError: /usr/local/lib/python2.7/lib-dynload/_io.so: simbolo non definito: 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() 

Al momento l'esecuzione dello script ottengo i seguenti errori:

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 

ho guardato in giro su SO e trovati errori simili come this one, ma non sembrano avere a il cuore del perché alcune persone sono in grado di eseguire questo codice e io no. Sembrano aver a che fare con problemi relativi allo sviluppo in C e all'uso di Python per accedere a quel modulo C.

E 'la versione di Ubuntu, versione Python ??

Grazie.

+1

se non si sta usando 'data = urllib2.urlopen (url) .read()'? –

+1

Sembra che tu abbia più installazioni di Python che si stompano l'una sull'altra. –

risposta

17

Hai (almeno) due diverse versioni di Python installate e stai mixando i loro file. Assicurati che $PYTHONPATH, $PYTHONHOME e sys.path contengano solo cartelle per una singola installazione Python. Nel tuo caso, una installazione è in /usr/local e l'altra è probabilmente in /usr.

Inoltre, è possibile provare a installare virtualenvwrapper e impostare un ambiente Python separato per alleviare eventuali conflitti che potrebbero verificarsi. Here è un tutorial per l'installazione e l'uso di virtualenv.

+1

Come si fa esattamente? Puoi approfondire un po 'di più? Grazie. –

+1

Per aiutare ulteriormente, ho bisogno di sapere quali versioni di Python hai installato, come le hai installate e come si avvia l'applicazione. Per favore modifica la tua domanda per darmi queste informazioni. –

+1

Nessuna necessità. La soluzione Virtualenv ha funzionato per me e sembra essere un modo migliore di fare andare avanti comunque le cose. Mi piacerebbe un pollice in alto se pensi che la domanda potrebbe giovare agli altri. Saluti. –