[Python-de] PYTHONPATH und sys.path

Christian Heimes lists at cheimes.de
Fr Feb 3 13:09:59 CET 2012


Am 03.02.2012 12:35, schrieb Bernhard Herzog:
> 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.

Deine Erfahrung widerspricht aber der Implementation, Designidee und
auch der Realtität. Sorry, aber du liegst falsch. ;)

Wenn du die Implementation in Py_InitializeEx() verfolgst, wirst du
feststellen, dass in Py_GetPath() die Umgebungsvariable PYTHONPATH vor
initsite() ausgewertet wird. Das wurde gemacht, damit man eine eigene
site.py bzw. sitecustomize.py über PYTHONPATH einfügen kann. Der Code in
site.py parst alle *.pth Dateien in den site-packages und fügt diese
*vorne* in sys.path ein.

Probier es mal selbst aus:

$ PYTHONPATH=/tmp python2.7 -c "import sys; print sys.path"
['', '/usr/local/lib/python2.7/dist-packages/selenium-2.0rc2-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/rdflib-3.1.0-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/psutil-0.3.0-py2.7-linux-x86_64.egg',
'/tmp', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/home/heimes/.local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/pymodules/python2.7/gtk-2.0',
'/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7']

Christian



Mehr Informationen über die Mailingliste python-de