Re: [Python-de] Python 2.7: sys.path vs. PYTHONPATH

Hartmut Goebel <h.goebel@goebel-consult.de> writes:
Dann hast Du bei 2.6 anders installiert. Kann es sein, dass Du unter 2.6 setuptools/ditstribute nicht installiert hattest, als Du das andere installiert hast?
Keine Ahnung. Ich administriere den Rechner nicht selbst. Er wurde nur irgendwann upgedatet (auf openSUSE 11.4), allerdings aller Wahrscheinlichkeit ohne irgendwelche lokalen besonderheiten.
Wenn Du sagst, bei 2.6 ging es, bei 2.7 nicht, dann prüfe bitte, ob alle Deinen Parameter wirklich unverändert sind. Oder noch besser: Mache einen erneuten Test mit 2.6.
Das wäre mit einem Downgrade verbunden und ist daher leider nicht mehr möglich.
OK, das erklärt einiges. Das heißt (ich kann es gerade nicht testen), es sollte reichen, so etwas zu schreiben?
Nein, genügt nicht. Siehe `pydoc site`.
import site site.addsitedir('/mylocal/python/lib64/python2.7/site-packages/') so etwas?
beginnt und unmittelbar aufgerufen wird. Ich habe daher keinen Zugriff auf das Environment des Nutzers.
Häh? Entweder, Du bis für die Installation zuständig, dann hast Du Zugriff auf das Environment des Anwenders.
Bin ich nicht, und ich habe auch keinen Zugriff.
Oder Du hast keinen Zugriff auf das Environment des Anwenders, dann bist Du auch nicht dafür Verantwortlich, dem Anwender eine funktionsfähige Umgebung zu schaffen.
Die Umgebung ist ja funktionsfähig. Ich möchte jetzt lediglich das Script so anpassen, dass es in dieser läuft. Wenn ich dazu private Pakete installiere, dann sollte mein Script diese natürlich auch finden, ohne dass der Anwender da noch irgendwas macht.
Ich dachte auch immer, dass genau dafür der sys.path vorgesehen ist und PYTHONPATH nur dazu dient, den nochmal von außen zu setzen?
Genau umgekehrt: PYTHONPATH ist der primäre Weg, den Modul-Suchpfad zu setzen. Denn der ist immer abhängig von der Betriebssystem-Umgebung (wo ist das Zeug installiert). Damit ist es Aufgabe des Betriebssystems, das der Anwendung mitzuteilen.
Wenn ein Programm eigene Pfade verwendet, dann ist es sinnvoll, diese im Programm selbst zu vermerken -- insbesondere wenn es ein Programm ist, welches für ein spezifisches Problem geschrieben ist (und nach einem Jahr weggeworfen wird). "Das Betriebssystem" weiß doch schlielich gar nicht, wo ich die zusätzlichen Pakete installiere -- aber ich weiß es, und ich sollte meinem Programm dann auch sagen können, wo das ist.
Oder verwende virtualenv. Ist zumindest nicht unter docs.python.org zu finden. http://lmgtfy.com/?q=python+virtualenv
Das ist mir schon klar. Was ich damit sagen wollte: ich möchte nicht ein spezielles Zusatzpaket installieren, wenn ich die Aufgabe auch schon mit den "Batteries included" lösen kann. Ole
participants (1)
-
Ole Streicher