Je n'ai trouvé ce problème documenté nulle part, mais si vous spécifiez install-option
dans ~/.pip/pip.conf
, il n'est pas remplacé par virtualenv
. Je spécifie --prefix=/path/to/somwhere
dans install-option
raison de restrictions utilisateur sur mon ordinateur de travail, et avec ce paramétrage, toute installation dans un venv (avec $PIP_RESPECT_VIRTUALENV
activé) est toujours installée dans le chemin spécifié par install-option
. Ce n'était pas un comportement attendu pour moi, mais je ne suis pas sûr que le fait d'ignorer pip.conf
soit la bonne marche à suivre. Il est peut-être préférable de documenter un tel comportement. Une autre chose étrange est que vous ne pouvez pas désinstaller alors que dans le virtualenv, car le paquet n'est pas installé dans le venv, et pip ne peut pas le trouver.
Cela m'est arrivé lors de l'utilisation de pip 1.4.1 et 1.5.6 et virtualenv 1.11.6.
Mon correctif actuel est de définir $PIP_CONFIG_FILE
sur /dev/null
via virtualenvwrapper
le postactivate
hook et de le désactiver dans postdeactivate
.
Ce problème est toujours présent. Dans mon cas, j'aimerais utiliser --user
installe quand il n'est pas dans un venv (en définissant ceci dans ~/.config/pip/pip.conf
, mais "normal" (in-venv) installe quand dans un venv (do --user
installe même un sens dans un venv?).
Deux solutions possibles (dont seule la première peut vraiment être implémentée par pip, mais je peux aussi bien commencer la discussion ici) sont
~/.config/pip/pip-novenv.conf
ou autre), ou--user
un no-op dans un venv (encore une fois, je ne suis pas sûr que --user
+ venv ait un sens: il n'y a qu'un seul ~/.local/lib/pythonX.Y
donc tout isolement est rompu).Problème toujours présent dans Python 3.5.3.
C'est assez ironique et frustrant que si l'on essaie d'être prudent avec l'environnement, au point d'utiliser des environnements virtuels et des installations utilisateur dans pip.conf, on se termine par un système qui ne fonctionne pas.
J'essayais d'éviter que les membres de l'équipe utilisent sudo pip
. Cela devient de plus en plus difficile.
N'est-ce pas un bug dans virtualenv
- qu'il ne définit pas PIP_CONFIG_FILE=/dev/null
lors de l'utilisation d'une option?
Oh, j'ai été mordu par ça aujourd'hui.
Quelqu'un peut-il s'il vous plaît fournir des instructions claires sur la façon de reproduire cela?
Commentaire le plus utile
Mon correctif actuel est de définir
$PIP_CONFIG_FILE
sur/dev/null
viavirtualenvwrapper
lepostactivate
hook et de le désactiver danspostdeactivate
.