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

29,322

You have (at least) two different versions of Python installed and you're mixing their files. Make sure that $PYTHONPATH, $PYTHONHOME and sys.path only contain folders for a single Python installation. In your case, one installation is in /usr/local and the other is probably in /usr.

Also, you can try installing virtualenvwrapper and setting up separate python environment to alleviate any conflicts you might be having. Here is a tutorial for installing and using virtualenv.

Share:
29,322
Mr. Concolato
Author by

Mr. Concolato

I am a Computer Scientist and Software Engineer that specializes in: Mobile and Internet Computing, Information Storage and Retrieval, and Visualization. Additional areas of interest are in GIS and Machine Learning. My background also includes Sociology, Criminology, and Business Information Systems. Current Pet Projects on GitHub Past Projects: Enforce Data for Department of Labor Nomadic v1.1 (In the Google Play store) Publications: Data Science: A New Paradigm in the Age of Big-Data Science and Analytics A Survey of Cloud-based Network Intrusion Detection Analysis Stay curious my friends! ;)

Updated on July 09, 2022

Comments

  • Mr. Concolato
    Mr. Concolato almost 2 years

    I am trying to build a triviol Python script that will grab data from URL and save it onto the server. Concider the below code:

    #!/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()
    

    Upon running the script I get the following errors:

    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
    

    I have looked around on SO and found similar errors like this one, but they do not seem to get at the heart of why some people are able to get this code to run and I am not. They all seem to be dealing with issues concerning developing in C and using Python to access that C module.

    Is it the Ubuntu version, Python version??

    Thank you.