[Python-de] wie sucht Python die Module?

Marek Kubica pythonmailing at web.de
Fre Jun 18 21:04:47 CEST 2004


Hi!
Ich habe mal paar alte Beiträge rausgekruscht...
> Ich leider noch unter Windows ;-)
> Daher werden sicherlich noch DLLs gebraucht, wahrscheinlich auch
> includes etc. benötigt
Die sind alle in den 'package' verzichnissen.

> > Was heißt "Magic-Lines"? Meinst du "#! /pfad/zum/interpreter" in der
> > ersten Zeile?
> ja! in dem erwähnten Buch "Einsteigerseminar von Martin Uzak" nennt
> der Autor die so.
Die heißen normalerweise shebang, haben aber nur unter Unices sinn, da
dort alle dateien ausführbar gemacht werden können. (für python ist er
übringens am besten #!/usr/bin/env python[2/2.3 usw])

> compilieren kann ich leider nicht!
Mit MinGW (www.mingw.org) sollte das gehen. Aber um ehrlich zu sein,
habe ich das auch nie unter Windows versucht, unter linux reicht ein
simples ./configure und make.

> unter Windows habe ich den Pfad in der Systemumgebung. Ist das wohl
> identisch? Muß ich alle .py-Dateien, die verwendet werden, in das
> Verzeichnis des aufrufenden Programms kopieren? Dann erhalte ich ja
> einen ziemlichen "Overhead".
Na das finde ich witzig. Nein, ganz so schlimm ist es nicht. Es gibt
einmal den PATH, der definiert wo in deinem OS programme gesucht werden.
Mach jetzt am besten 'cmd' auf:
echo %PATH%
Das ist der Systempath. Daneben gibt es den Pythonpath. Wenn python.exe
in deinem PATH ist (höhst empfehlenswert, meiner hat 7 Zeilen und cmd
arbeitet fast wie bash) kannst jetzt in cmd python starten:
python
>>> import sys
>>> sys.path
Hier steht dann wo Python module und packages sucht. Und jetzt zu deiner
PIL frage: wenn ein ordner eine datei __init__.py enthält (egal ob leer
oder nicht) und in sys.path liegt (der ordner) dann wird er zum package
und du kannst ihn dann über import PIL aufrufen.

> Python 2.2 und Python 2.3! Aber vielleicht hat sich die Frage schon
> durch Deine Antwort erledigt, da Du sagst, dass Python immer komplett
> aktuell gehalten wird. Mich machte nur der Hinweis bei wxPython
> misstrauisch, dass neue Namenskonventionen eingearbeitet wären.
Das ist wxPython-sache (und die neuen Namenskonventionen sind sehr gut,
da sie dein global namespace nicht aufblasen).

grüße,
Marek