Ich versuche, eine virtuelle Umgebung zu erstellen und Pakete aus der Datei „requirements.txt“ zu installieren, die ich für das Projekt habe.
Wenn ich die Umgebung erstelle, überprüfe ich, ob Python und Pip tatsächlich aus dieser Umgebung stammen. Und zwar, wenn ich Folgendes ausführe:
source ./virtualenv/bin/activate
which pip
which python
Ich erhalte Ergebnisse, die auf die Binärdateien im Verzeichnis „virtualenv“ verweisen.
Anschließend fahre ich mit der Installation der Pakete fort:
pip install -r requirements.txt
Eine Zeit lang machte mir die pkg-resources=0.0.0
Zeile in requirements.txt Probleme. Wie sich herausstellte, wurde diese Zeile aufgrund eines Fehlers in Ubuntu in diese Datei eingefügt. Wie Sie sich wahrscheinlich denken können, hatte ich diese Datei auf einem Ubuntu-Rechner erstellt.
Sobald ich die Zeile durchstreiche, wird die Installation fortgesetzt.
Wenn ich jedoch nach der Installation pip list ausführe, enthält die Liste nur
pip (8.1.1) pkg-Ressourcen (0.0.0) Setuptools (20.7.0)
Darüber hinaus sehe ich, wenn ich die virtuelle Umgebung deaktiviere und „pip list“ global ausführe, dass alle Abhängigkeiten global installiert wurden.
Hier stellen sich zwei Fragen. Erstens – und das ist am offensichtlichsten – warum passiert das? Zweitens: Wie kann ich meine globalen Pakete bereinigen und die Schadstoffe deinstallieren, die sich jetzt dort befinden?
Nachtrag:
Ein weiteres bizarres Verhalten besteht im Folgenden. Wenn ich versuche, es sudo pip uninstall -r requirements.txt
aus der virtuellen Umgebung heraus auszuführen, in der Hoffnung, die globale Installation rückgängig zu machen, erhalte ich die folgende Fehlermeldung:
Anforderung aldryn-apphooks-config kann nicht deinstalliert werden, nicht installiert
Das heißt, es scheint, dass Pip beim Versuch der Deinstallation versucht, innerhalb der virtuellen Umgebung nach Paketen zu suchen.
Wenn ich andererseits die virtuelle Umgebung deaktiviere, kann ich die Pakete mit demselben Befehl erfolgreich aus der globalen Installation deinstallieren.
Irgendwie gibt es einen Unterschied in der Funktionsweise des Pip-Install-Befehls unter Ubuntu im Vergleich zum Pip-Deinstallationsbefehl. Sie „suchen“ an unterschiedlichen Orten nach Paketen.