Dans ma maison, j'ai un répertoire nommé lib/python2.7
(il y a en fait cinq répertoires comme ça, pour différentes versions de python). Comme il s'agit d'un hébergement partagé (Webfaction), ce répertoire est fondamental pour moi. Là, j'ai des choses comme virtualenv
et virtualenvwrapper
installé, puisque en tant que client d'un hébergement partagé, je n'ai pas accès à sudo
et l'installation de paquets globaux.Pourquoi les paquets de liste de pip de virtualenv sont-ils dans mon répertoire lib/python2.7?
Cependant, lorsque je crée un virtualenv:
$ mkvirtualenv myenvironment
$ workon myenvironment
$ which pip
# outputs the myenvironment's path to pip
$ pip freeze
La commande affiche la liste complète des paquets sous mon lib/python2.7
(ce qui inclut les mêmes forfaits virtualenv et paquets en conflit, j'ai ... en raison de l'héritage .. . les raisons). Cela m'agace aussi si je veux installer un paquet qui est le nom d'un paquet dans lib/python2.7
puisqu'il ne me permet pas de le mettre à jour.
à l'intérieur de l'environnement workon
, j'essaie de vérifier si le PYTHONPATH a des trucs bizarres, mais il est vide:
$ echo $PYTHONPATH
# shows a blank line
Il est également vide si je tente cette commande de tout environnement virtuel.
Il semblerait que --no-site-packages
soit la valeur par défaut mais ne résout qu'une partie du problème. Cela signifie que: pip freeze | wc -l
affiche une valeur inférieure dans un environnement que lors d'une exécution globale, hors de tout environnement, ce qui m'indique que certains paquets déjà fournis sont exclus et proviennent de l'hébergement lui-même (et non installé par moi depuis , encore une fois, l'hébergement est partagé et je n'ai pas accès à l'espace global).
Ma question est: Comment puis-je résoudre ce problème? Je veux que mon virtualenv liste pas les paquets dans $HOME/lib/python2.7
S'il vous plaît éviter duper-linking à this question, rien était utile que là-bas et ne toujours pas une réponse acceptée. J'ai écrit cette question après avoir lu et essayé chaque solution dans cette question