web-dev-qa-db-fra.com

ImportError: Aucun module nommé _io dans Ubuntu 14.04

Je viens juste d'installer Ubuntu 14.04LTS et j'essaie d'utiliser pip, mais j'obtiens le suivi suivant:

(nlmanagement)psychok7@Ultrabook:~/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

des idées?? J'ai essayé Sudo apt-get install python3-pip et Sudo apt-get install python-pip

50
psychok7

Votre virtualenv a été corrompu en raison de différences dans la bibliothèque système Python.

Le meilleur choix est de réinstaller votre virtualenv:

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

J'ai eu le même problème. Cela s'est produit dans Ubuntu - 14.04 et la version Python de Virtual Environment - 2.7.3

Après avoir passé une journée à déboguer, en postant ma réponse ici, j'espère que cela aidera les futurs visiteurs.

J'ai trouvé que io.py appelle le module _io. Je pense que le module _io est interne à l'interpréteur, il est donc préférable de remplacer le binaire python dans l'environnement seul par la version la plus récente.

(Dans mon cas, virtualenv de l'agent Cloudera Manager 5.x sur Ubuntu 14.04 utilisait l'interpréteur python 2.7.3, il l'a remplacé par 2.7.6. 

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

Lorsqu'un nouveau virtualenv est créé, il utilise le binaire python mis à jour à partir du système. Par conséquent, cela explique la réponse acceptée dans le fil.

55
Thamme Gowda

Vous n'avez pas besoin de supprimer l'environnement virtuel.

Il suffit de suivre ces étapes. 

  1. Supposons que votre nom d’environnement virtuel est "mydev" et que vous utilisez virtualenvwrapper, ne 

    cd $WORKON_HOME
    virtualenv mydev
    

    La commande ci-dessus ne fait que mettre à jour le lien vers l'exécutable python sans perdre aucun paquet. Sans virtualenvwrapper, $WORKON_HOME pourrait ne pas être défini; vous devez ensuite passer au répertoire parent de virtualenv.

  2. en dehors de virtualenv, si votre pip ne fonctionne pas, alors juste 

    easy_install pip
    

    va résoudre le problème.

22
Gomes

Après la mise à niveau de mon serveur Ubuntu vers 14.04, je rencontre également ce type de problème

ImportError: No module named _io

Ensuite, j'ai découvert qu'il suffit de réinstaller virtualenv pour résoudre ce problème!

Sudo pip install virtualenv --upgrade

3
kakashi

Une des causes est un mauvais "pip". Voir: https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1373254

Et/ou cela peut être un problème avec virtualenv: https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1115466 Où la solution de contournement recommandée est:

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

Vous devez remplacer la version de python dans votre virtualenv corrompu. 

Faire ceci: 

  1. Créer un nouveau Virtualenv 

    mkvirtualenv MyNewTestEnv
    
  2. Localisez "python" (dans mon cas, les virtualenvs sont situés dans le répertoire de base)

    cd ~/.virtualenvs/MyNewTestEnv/bin
    
  3. Copiez "python" du nouveau virtualenv dans votre virtualenv corrompu

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

C'est tout. Maintenant, votre CorruptedEnv devrait être corrigé.

0
dh1tw

Cette solution de contournement s'applique à SuSE 12.2 Python téléchargé et installé avec ./configure et effectue l'installation dans le dossier/usr/local par défaut

Pip installé et virtualenv 

Lorsque vous essayez de créer un env virtuel python

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

Voici la solution de contournement: 

Vérifiez le python sys.path par défaut (ne modifiez pas PYTHONPATH par défaut)

vérifie s'il existe des bibliothèques dir /usr/local/lib/python2.7/lib-dynload existe

sinon, créez un lien symbolique vers le chemin existant de lib64:

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/

Après cette solution de contournement "virtualenv -p python venv2" fonctionne

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

Si vous avez installé différentes versions de python. Vous devez référencer votre python

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

ou 

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