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

Ole Streicher ole-usenet-spam at gmx.net
So Sep 18 13:39:31 CEST 2011


Hartmut Goebel <h.goebel at goebel-consult.de> writes:
> Am 16.09.2011 10:26, schrieb Ole Streicher:
>> Unter 2.6 hatte das noch so funktioniert. Was hat sich da verändert?
> Sicher, dass das unter 2.6 funktioniert hat?

Ja. Unter 2.6 war die Verzeichnisstruktur unter 
/mylocal/python/lib64/python2.7/site-packages/ folgende:

pyfits/
otherpkg/ usw. 

Jetzt ist sie

distribute-0.6.19-py2.7.egg/distribute/
pyfits-3.0-py2.7-linux-x86_64.egg/pyfits/
otherpkg-0.3.3-py2.7.egg/otherpkg/ usw.

> Die .pth-Files werden beim Starten von Python vom Modul `site`
> abgearbeitet. Also muss das Verzeichnis in PYTHONPATH sein, wenn Du dort
> .pth-Dateien verwenden möchtest.

OK, das erklärt einiges. Das heißt (ich kann es gerade nicht testen), es
sollte reichen, so etwas zu schreiben?

----------------------8<-------------------------------------------
import sys
sys.path.append('/mylocal/python/lib64/python2.7/site-packages/')
import site
import pyfits
----------------------8<-------------------------------------------

> M.E. ergibt die Installationsmethode, die Du verwendest, so keinen
> Sinn. Denn offensichtlich willst Du "site-packages" um Deinen Pfad
> erweitern. 

Mir ist das nicht ganz verständlich: ich hatte doch beim Installieren
"--prefix=/mylocal/python" angegeben; warum wird da jetzt zusätzlich ein
Verzeichnis "pyfits-3.0-py2.7-linux-x86_64.egg/" eingefügt? 

> Dann mach es aber doch richtig und setzte PYTHONPATH.

Das Problem hier ist, dass es ein Anwenderprogramm gibt, welches mit

#!/usr/bin/env python
import sys
sys.path.append('/mylocal/python/lib64/python2.7/site-packages/')
import pyfits

beginnt und unmittelbar aufgerufen wird. Ich habe daher keinen Zugriff
auf das Environment des Nutzers. 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?

> Oder verwende virtualenv.

Ist zumindest nicht unter docs.python.org zu finden.

Viele Grüße

Ole


Mehr Informationen über die Mailingliste python-de