Warum fügen setuptools / easy_install .pth-Dateien nicht gut mit PYTHONPATH zusammen, und wie bekomme ich sie zum Spielen und behalte die Verzeichnisse in meinem PYTHONPATH vor diesen .pt-Shoves im sys.path?
Mein aktuelles Problem ist, dass ich ein Paket für unser Projekt erstellt habe, mit den Anforderungen PyYAML und PyCrypto.
%Vor%Wie wir entwickelt haben, haben wir PyYaml im Standardverzeichnis (/usr/lib64/python2.6/site-packages) mit pip installiert. Wir haben dort eine ältere Version von PyCrypto installiert und dann festgestellt, dass wir die neuere Version benötigen, die wir unter /opt/devtools/lib64/python2.6/site-packages installiert haben. Wir haben bereits unseren PYTHONPATH so eingestellt, dass er zuerst von / opt vor / usr / lib64 liest. Und das alles hat in der Entwicklung gut funktioniert. Als wir rannten, haben wir PyCrypto 2.3 von / opt und PyYaml von / usr / lib64 / ..
Aber jetzt, wenn ich versuche, in einem virtualenv zu installieren, und wenn ich python setup.py develop
ausführe, fügt setuptools / distribute /usr/lib64/python2.6/site-packages zur easy-install.pth hinzu, aber nicht /opt/devtools/lib64/python2.6/site-packages. Es gibt die richtigen Versionen, wie in der Ausgabe zu sehen ist:
Aber nicht / opt / ... zur easy-install.pth hinzufügen. (Nur / usr / lib64 ... und das Verzeichnis, in dem setup.py ausgeführt wurde, wird dem Pfad hinzugefügt.)
Das Endergebnis ist, obwohl ich setuptools denkt, dass es erfolgreich war, wenn ich meinen Code ausführe, entscheidet easy-install.pth, dass er weiß, was ich besser will als ich, fügt sich selbst vor meinem PYTHONPATH ein und ich importiere den falsche Version von PyCrypto.
Zwei Fragen:
Warum sind setuptools inkonsistent in Bezug auf die Verzeichnisse, die der Datei .pth hinzugefügt werden? Ich würde erwarten, dass entweder beide Verzeichnisse oder keines der Verzeichnisse installiert wird.
Gibt es eine Möglichkeit, setuptools nicht zu versuchen, meinen PYTHONPATH zu überschreiben? Warum wurde das überhaupt als eine gute Idee betrachtet?
Tags und Links python setuptools pythonpath