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
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
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.
Vous n'avez pas besoin de supprimer l'environnement virtuel.
Il suffit de suivre ces étapes.
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.
en dehors de virtualenv, si votre pip ne fonctionne pas, alors juste
easy_install pip
va résoudre le problème.
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
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 .
Vous devez remplacer la version de python dans votre virtualenv corrompu.
Faire ceci:
Créer un nouveau Virtualenv
mkvirtualenv MyNewTestEnv
Localisez "python" (dans mon cas, les virtualenvs sont situés dans le répertoire de base)
cd ~/.virtualenvs/MyNewTestEnv/bin
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é.
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 #
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