Python:ImportError:/usr/local/lib/python2.7/lib-dynload/_io.so:undefined symbol:PyUnicodeUCS2_Replace

时间:2014-12-09 15:46:25

标签: python python-2.7 ubuntu-12.04

我正在尝试构建一个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版本吗?

谢谢。

1 个答案:

答案 0 :(得分:18)

您已安装(至少)两个不同版本的Python,并且您正在混合他们的文件。确保$PYTHONPATH$PYTHONHOMEsys.path仅包含单个Python安装的文件夹。在您的情况下,一个安装在/usr/local,另一个安装在/usr

此外,您可以尝试安装virtualenvwrapper并设置单独的python环境以减轻您可能遇到的任何冲突。 Here是安装和使用virtualenv的教程。