On 2012-02-03, Olе Streicher wrote:
Stefan Behnel
writes: Heißt das jetzt, du möchtest deinen Nutzern lieber aufbürden, irgendwelche Pfade von Hand herauszusuchen und explizit von der Kommandozeile zu übergeben, anstatt einfach in eine saubere Umgebung zu installieren?
Konkreter Fall: das Paket wird lokal von einem (non-Root) Nutzer installiert, der dann den Pfad mittels PYTHONPATH adaptiert. Das läuft gut, bis der Systemadministrator das Paket ebenfalls (site-local) installiert. Irgendwann gibt es ein Update, welches der lokale Nutzer installiert, um nach einer Weile festzustellen, dass der -- trotz PYTHONPATH -- immer noch die alte Version (nämlich die des Sysadmins) lädt.
Das sollte meinem Verständnis nach nicht passieren. PYTHONPATH sollte an sich so verwendet werden können, wie Du es erwartest: die Verzeichnisse in PYTHONPATH werden vor denen default Verzeichnissen (Standardbibliothek, site-packages, etc.) durchsucht. In sys.path sollte sich maximal ein weiteres Verzeichnis vor denen aus PYTHONPATH befinden, typischerweise das Verzeichnis, indem sich das Script befindet, das Python ausführen soll, bzw. das aktuelle Arbeitsverzeichnis bei interaktivem Gebrauch oder verwenden der -c Option. Siehe http://docs.python.org/using/cmdline.html#envvar-PYTHONPATH Meiner Erfahrung nach funktioniert PYTHONPATH auch genauso und man kann sehr gut ohne virtualenv auskommen. Es wäre eventuell interessant herauszufinden, warum PYTHONPATH bei Dir nicht so funktioniert wie erwartet. Gibt es ein sitecustomize Modul? Falls ja, könnte das dafür verantwortlich sein. Gibt es irgendwelche *.pth Dateien, die Zeilen enthalten, die mit "import" anfangen. Solche Zeilen werden vom Interpreter ausgeführt und können in sys.path auch am Anfang Einträge einfügen, vor den Verzeichnissen aus PYTHONPATH. Bernhard -- Bernhard Herzog | ++49-541-335 08 30 | http://www.intevation.de/ Intevation GmbH, Neuer Graben 17, 49074 Osnabrück | AG Osnabrück, HR B 18998 Geschäftsführer: Frank Koormann, Bernhard Reiter, Dr. Jan-Oliver Wagner