web-dev-qa-db-fra.com

Python ne s'installent pas dans virtualenv en utilisant pip

J'ai du mal à installer twisted

pip --version

pip 1.1 depuis /home/chris/GL/GLBackend/glenv/lib/python2.7/site-packages/pip-1.1-py2.7.Egg (python 2.7)

Créer un environnement virtuel

chris@chris-mint ~/GL/GLBackend $ Sudo virtualenv -p python2.7 glenv

Exécution de virtualenv avec l'interpréteur /usr/bin/python2.7 Nouveau python exécutable dans glenv/bin/python2.7 Création également d'un exécutable dans glenv/bin/python Installation de la distribution ....... .................................................. .................................................. .................................................. ................................ terminé Installation de pip .............. .terminé.

Au cas où, j'activerais toutes les autorisations

chris@chris-mint ~/GL/GLBackend $ Sudo chmod -R 777 glenv

chris@chris-mint ~/GL/GLBackend $ source glenv/bin/activate


(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze

argparse == 1.2.1 distribuer == 0.6.24 wsgiref == 0.1.2

twisted n'est pas répertorié ici comme installé

(glenv)chris@chris-mint ~/GL/GLBackend $ Sudo pip install twisted

Exigence déjà satisfaite (utilisez --upgrade pour mettre à niveau): torsadée dans /usr/local/lib/python2.7/dist-packages Exigence déjà satisfaite (utilisez --upgrade pour mettre à niveau): zope.interface> = 3.6.0 in/usr/local/lib/python2.7/dist-packages (de twisted) Exigence déjà satisfaite (utilisez --upgrade pour mettre à niveau): distribuez dans /usr/local/lib/python2.7/dist-packages (de zope.interface > = 3.6.0-> twisted) Nettoyage en cours ... (glenv) chris @ chris-mint ~/GL/GLBackend $ pip Uninstall twisted Impossible de désinstaller l'exigence twisted, not installed Stockage du journal complet dans /home/chris/.pip/ pip.log

Mais quand je l'installe, il dit que c'est déjà installé. Forcer l'installation:

Sudo pip install -I twisted

Téléchargement/déballage de twisted Téléchargement de Twisted-12.3.0.tar.bz2 (2.6Mb): 2.6Mb téléchargés Running setup.py Egg_info pour le paquet twisted. . .

Zope torsadée installée avec succès distribuer Nettoyage en cours ...

Et pourtant il n'est toujours pas installé

(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze

argparse == 1.2.1 distribuer == 0.6.24 wsgiref == 0.1.2

** Lorsque j'essaie d'exécuter Python qui utilisent twisted, j'obtiens une erreur indiquant que twisted n'est pas installé. C'est-à-dire:

ImportError: aucun module nommé twisted.python **

34
sav

Le problème ici est que vous utilisez Sudo alors que vous ne devriez pas l'être. Et cela fait que pip essaie de s'installer dans /usr/local/lib au lieu de ~/glenv/lib. (Et, parce que vous avez utilisé Sudo, cela réussit, mais cela ne vous aide pas, car vous n'autorisez pas les packages de sites système dans votre venv.)

Il y a plusieurs raisons Sudo pip pourrait conduire à ce comportement, mais le plus probable est le suivant: sur la plupart des systèmes (y compris les différentes boîtes Mac et RHEL/CentOS auxquelles j'ai un accès immédiat), le fichier sudoers réinitialisera votre environnement, puis ajoutera de retour dans une poignée de variables d'environnement sur la liste blanche. Cela signifie que lorsque vous Sudo pip, il ne verra pas les variables d'environnement que virtualenv configure, donc il reviendra à faire la chose par défaut et à installer dans votre système Python, au lieu de votre venv.

Mais vraiment, cela n'a pas d'importance pourquoi cela se produit. La réponse est la même: faites simplement pip install au lieu de Sudo pip install.

Notez que vous aussi voulez supprimer le Sudo sur l'appel de virtualenv, car cela entraînera probablement une configuration incorrecte du venv (c'est pourquoi vous avez besoin du Sudo chmod, ce qui ne serait pas nécessaire autrement). L'intérêt de l'installation de choses sous votre répertoire personnel est que vous pouvez le faire avec vos autorisations utilisateur normales.

En guise de remarque, vous souhaiterez peut-être également effectuer une mise à niveau vers une version plus récente virtualenv/pip, car la version 1.8 et la version 1.2 ont quelques corrections de bugs et améliorations. Mais j'ai vérifié que j'obtiens exactement le même problème que vous même avec les dernières versions (1.8.4 et 1.2.1), donc je ne pense pas que ce soit pertinent ici.

57
abarnert