Ich konnte dieses Problem nirgendwo dokumentiert finden, aber wenn Sie install-option
in ~/.pip/pip.conf
angeben, wird es nicht um virtualenv
überschrieben. Ich gebe --prefix=/path/to/somwhere
in install-option
aufgrund von Benutzereinschränkungen auf meinem Arbeits-PC an. Wenn diese Option festgelegt ist, werden alle Installationen in einem Venv (mit aktiviertem $PIP_RESPECT_VIRTUALENV
) weiterhin im angegebenen Pfad installiert um install-option
. Dies war für mich kein erwartetes Verhalten, aber ich bin mir nicht sicher, ob das Ignorieren von pip.conf
die richtige Vorgehensweise ist. Vielleicht ist es am besten, ein solches Verhalten zu dokumentieren. Eine andere seltsame Sache ist, dass Sie dann nicht deinstallieren können, während Sie sich in der virtuellen Umgebung befinden, da das Paket nicht in der venv installiert ist und pip es nicht finden kann.
Dies ist mir bei der Verwendung von pip 1.4.1 und 1.5.6 sowie virtualenv 1.11.6 passiert.
Meine aktuelle Lösung ist , zu setzen $PIP_CONFIG_FILE
auf /dev/null
über virtualenvwrapper
‚s postactivate
Haken und Lösen es in postdeactivate
.
Dieses Problem ist noch vorhanden. In meinem Fall möchte ich --user
-Installationen verwenden, wenn Sie sich nicht in einem Venv befinden (indem Sie dies auf ~/.config/pip/pip.conf
, aber "normale" (In-Venv) -Installationen, wenn Sie sich in einem Venv befinden (do --user
Installationen machen sogar in einem Venv Sinn?).
Zwei mögliche Lösungen (von denen nur die erste wirklich von pip implementiert werden kann, aber ich kann die Diskussion auch hier beginnen) sind
~/.config/pip/pip-novenv.conf
oder was auch immer), oder--user
einem No-Op in einem Venv (wieder bin ich mir nicht sicher, ob --user
+ Venv Sinn macht: Es gibt nur einen ~/.local/lib/pythonX.Y
also ist dort jede Isolation gebrochen).Problem in Python 3.5.3 noch vorhanden.
Es ist ziemlich ironisch und frustrierend, dass man, wenn man versucht, vorsichtig mit der Umgebung umzugehen, bis hin zur Verwendung virtueller Umgebungen und Benutzerinstallationen in pip.conf, mit einem nicht funktionierenden System endet.
Ich habe versucht zu vermeiden, dass Teammitglieder sudo pip
. Es wird immer schwieriger.
Ist das nicht ein Fehler in virtualenv
- dass es bei Verwendung einer Option nicht PIP_CONFIG_FILE=/dev/null
?
Oh, wurde heute davon gebissen.
Kann jemand bitte klare Anweisungen geben, wie dies reproduziert werden kann?
Hilfreichster Kommentar
Meine aktuelle Lösung ist , zu setzen
$PIP_CONFIG_FILE
auf/dev/null
übervirtualenvwrapper
‚spostactivate
Haken und Lösen es inpostdeactivate
.