我正在尝试构建一个triviol Python脚本,该脚本将从URL获取数据并将其保存到服务器上。 Concider下面的代码:
#!/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()
运行脚本后,我收到以下错误:
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
我已经查看了SO并发现类似this one之类的错误,但它们似乎并没有解释为什么有些人能够运行此代码并且我不是。他们似乎都在处理有关使用C开发并使用Python访问该C模块的问题。
是Ubuntu版本,Python版本吗?
谢谢。
答案 0 :(得分:18)
您已安装(至少)两个不同版本的Python,并且您正在混合他们的文件。确保$PYTHONPATH
,$PYTHONHOME
和sys.path
仅包含单个Python安装的文件夹。在您的情况下,一个安装在/usr/local
,另一个安装在/usr
。
此外,您可以尝试安装virtualenvwrapper
并设置单独的python环境以减轻您可能遇到的任何冲突。 Here是安装和使用virtualenv的教程。