Die module search path (python 3 docu) unterscheidet sich mit und ohne Skriptdatei:
interaktive Python-Interpreter
(beide gilt für python
und ipython
)
$ python
Python 2.7.3 (default, Dec 18 2014, 19:10:20)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', '/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', '/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/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/ubuntuone-client', '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-installer', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']
>>>
Hinweis der erste Eintrag ein Wesen leerer String. Eine leere Zeichenfolge ist ein relativer Pfad, der .
entspricht. Relative Pfade im Modulsuchpfad sind relativ zum aktuellen Arbeitsverzeichnis des Interpreterprozesses. Dies ist also nur das aktuelle Arbeitsverzeichnis, in dem Sie den Interpreter aufgerufen haben. (Was in Ihrem Fall passiert die Wurzel des Projekts sein.)
eine Skriptdatei ausführen
$ echo 'import sys' > /tmp/pathtest.py
$ echo 'print(sys.path)' >> /tmp/pathtest.py
$ python /tmp/pathtest.py
['/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', '/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/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/ubuntuone-client', '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-installer', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']
Hinweis darauf, dass hier der erste Eintrag ist der absolute Pfad des Verzeichnisses, die Skriptdatei enthält, wir übergeben als ein Argument.
so im Grunde hinzufügen 'import sys; sys.path = [''] + sys.path' zu Ihrem Skript – aforaudrey
auch, nicht in Versuchung geraten, 'sys.path.extend ([''])' (wie ich es tat), da die Reihenfolge macht ein Unterschied. – gpano