web-dev-qa-db-de.com

ImportError: Kein Modul namens _io in Ubuntu 14.04

Ich habe gerade erst Ubuntu 14.04LTS installiert und ich versuche Pip zu benutzen, aber ich bekomme das folgende Traceback

(nlmanagement)[email protected]:~/code/work/nlmanagement$ pip freeze
Traceback (most recent call last):
  File "/home/psychok7/code/work/venv/nlmanagement/bin/pip", line 9, in <module>
    load_entry_point('pip==1.1', 'console_scripts', 'pip')()
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.Egg/pkg_resources.py", line 337, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.Egg/pkg_resources.py", line 2279, in load_entry_point
    return ep.load()
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/distribute-0.6.24-py2.7.Egg/pkg_resources.py", line 1989, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/pip-1.1-py2.7.Egg/pip/__init__.py", line 10, in <module>
    from pip.backwardcompat import walk_packages, console_to_str
  File "/home/psychok7/code/work/venv/nlmanagement/local/lib/python2.7/site-packages/pip-1.1-py2.7.Egg/pip/backwardcompat.py", line 77, in <module>
    from urllib2 import URLError, HTTPError
  File "/usr/lib/python2.7/urllib2.py", line 94, in <module>
    import httplib
  File "/usr/lib/python2.7/httplib.py", line 79, in <module>
    import mimetools
  File "/usr/lib/python2.7/mimetools.py", line 6, in <module>
    import tempfile
  File "/usr/lib/python2.7/tempfile.py", line 32, in <module>
    import io as _io
  File "/usr/lib/python2.7/io.py", line 51, in <module>
    import _io
ImportError: No module named _io

irgendwelche Ideen?? Ich habe versucht Sudo apt-get install python3-pip und Sudo apt-get install python-pip

50
psychok7

Ihre Virtualenv wurde aufgrund von Differenzen in der Python-Systemlib beschädigt.

Am besten installieren Sie Ihre Virtualenv neu:

$ deactivate
$ rmvirtualenv nlmanagement
$ mkvirtualenv nlmanagement
$ pip install -r requirements.txt
50
Yuval Adam

Ich hatte das gleiche Problem. Dies geschah in Ubuntu - 14.04 und der Python-Version von Virtual Environment - 2.7.3

Nachdem ich einen Tag im Debugging verbracht und meine Antwort hier veröffentlicht habe, hoffe ich, dass sie zukünftigen Besuchern hilft.

Ich habe festgestellt, dass io.py das _io-Modul aufruft. Ich denke, das _io-Modul ist intern für den Interpreter, also sollte das Ersetzen der python-Binärdatei in der Umgebung allein durch die neuere Version behoben werden.

(In meinem Fall verwendete der Virtualenv des Cloudera Manager 5.x Agents auf Ubuntu 14.04 den Python-Interpreter 2.7.3 und ersetzte ihn durch 2.7.6. 

echo "Using " && python2.7 --version
mv myenv/bin/python myenv/bin/python.bak;
cp `which python2.7` myenv/bin/python

Wenn eine neue Virtualenv erstellt wird, verwendet sie aktualisierte Python-Binärdateien vom System. Das erklärt also die akzeptierte Antwort im Thread.

55
Thamme Gowda

Sie müssen die virtuelle Umgebung nicht löschen.

Folgen Sie einfach diesen Schritten. 

  1. Angenommen, der Name Ihrer virtuellen Umgebung lautet "mydev" und Sie verwenden virtualenvwrapper 

    cd $WORKON_HOME
    virtualenv mydev
    

    Der obige Befehl aktualisiert lediglich die Verknüpfung zur ausführbaren Python-Datei, ohne ein Paket zu verlieren. Ohne virtualenvwrapper ist $WORKON_HOME möglicherweise nicht definiert. dann müssen Sie in das übergeordnete Verzeichnis der virtualenv wechseln.

  2. außerhalb von virtualenv, wenn dein pip nicht funktioniert, dann einfach 

    easy_install pip
    

    wird das Problem beheben.

22
Gomes

Nach dem Upgrade meines Ubuntu-Servers auf Version 14.04 habe ich auch dieses Problem bei der Ausführung von Pip

ImportError: No module named _io

Dann fand ich heraus, dass virtualenv einfach neu installieren kann, um dieses Problem zu lösen!

Sudo pip install virtualenv --upgrade

3
kakashi

Eine Ursache dafür ist ein schlechter "Pip". Siehe: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1373254

Und/oder kann ein Problem mit virtualenv sein: https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1115466 .

  cd /usr/lib/python2.7
  ln -s plat-x86_64-linux-gnu/_sysconfigdata_nd.py .
2
Bryce

Sie müssen die Python-Version in Ihrer beschädigten virtualenv ersetzen. 

Mach das: 

  1. Erstellen Sie eine neue Virtualenv 

    mkvirtualenv MyNewTestEnv
    
  2. Suchen Sie nach "python" (in meinem Fall befinden sich die virtualenvs im Home-Verzeichnis)

    cd ~/.virtualenvs/MyNewTestEnv/bin
    
  3. Kopieren Sie "Python" aus der neuen Virtualenv in Ihre beschädigte Virtualenv

    cp ~/.virtualenvs/MyNewTestEnv/bin/python ~/.virtualenvs/<yourCorruptedEnv>/bin
    

Das ist es. Nun sollte Ihr CorruptedEnv behoben sein.

0
dh1tw

Diese Problemumgehung gilt für SuSE 12.2 Python wurde heruntergeladen und mit ./configure installiert und in den Ordner defult/usr/local installiert

Installierte Pip und Virtualenv 

Beim Versuch, eine virtuelle Python-Umgebung zu erstellen

*linux-t69c:/nkadic # virtualenv -p python venv2*
**ImportError: No module named _struct**
or (if manually setting PYTHONPATH)
**ImportError: No module named _io**

Hier ist die Problemumgehung: 

Überprüfen Sie den Standard-Python sys.path (ändern Sie den Standard-PYTHONPATH nicht).

Überprüfen Sie, ob das Verzeichnis libs /usr/local/lib/python2.7/lib-dynload vorhanden ist

wenn nicht, erstellen Sie einen Symlink zu einem vorhandenen lib64-Pfad:

linux-t69c:/nkadic # ln -s /usr/local/lib64/python2.7/lib-dynload/  
/usr/local/lib/python2.7/lib-dynload
linux-t69c:/nkadic # ls -ltr /usr/local/lib/python2.7/lib-dynload
lrwxrwxrwx 1 root root 39 Aug 12 21:06 /usr/local/lib/python2.7/lib-dynload -> 
/usr/local/lib64/python2.7/lib-dynload/

Nach dieser Problemumgehung funktioniert "virtualenv -p python venv2"

linux-t69c:/nkadic # virtualenv -p python venv2
Already using interpreter /usr/local/bin/python
PYTHONHOME is set.  You *must* activate the virtualenv before using it
New python executable in /nkadic/venv2/bin/python
Installing setuptools, pip, wheel...done.
linux-t69c:/nkadic # 
0
nkadic

Wenn Sie verschiedene Python-Versionen installiert haben. Sie müssen auf Ihren Python verweisen

virtualenv -p /usr/bin/python2.7 myenv

oder 

virtualenv -p /usr/bin/python3.x myenv
0
mcolak