Angenommen, Ihre beiden Verzeichnisse sind echte Python-Pakete (Sie haben die __init__.py
Datei in ihnen), hier ist eine sichere Lösung für die Einbeziehung von Modulen relativ zum Ort des Skripts.
Ich gehe davon aus, dass Sie dies tun wollen, weil Sie eine Reihe von Modulen in Ihr Skript aufnehmen müssen. Ich verwende dies in der Produktion in mehreren Produkten und funktioniert in vielen speziellen Szenarien wie: Skripte, die aus einem anderen Verzeichnis aufgerufen oder mit Python Execute ausgeführt werden, anstatt einen neuen Interpreter zu öffnen.
import os, sys, inspect
# realpath() will make your script run, even if you symlink it :)
cmd_folder = os.path.realpath(os.path.abspath(os.path.split(inspect.getfile( inspect.currentframe() ))[0]))
if cmd_folder not in sys.path:
sys.path.insert(0, cmd_folder)
# Use this if you want to include modules from a subfolder
cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile( inspect.currentframe() ))[0],"subfolder")))
if cmd_subfolder not in sys.path:
sys.path.insert(0, cmd_subfolder)
# Info:
# cmd_folder = os.path.dirname(os.path.abspath(__file__)) # DO NOT USE __file__ !!!
# __file__ fails if the script is called in different ways on Windows.
# __file__ fails if someone does os.chdir() before.
# sys.argv[0] also fails, because it doesn't not always contains the path.
Außerdem können Sie auf diese Weise Python zwingen, Ihr Modul anstelle der auf dem System installierten Module zu verwenden.
Achtung! Ich weiß nicht wirklich, was passiert, wenn das aktuelle Modul innerhalb einer egg
Datei. Wahrscheinlich schlägt sie auch fehl.
3 Stimmen
Sieht aus wie stackoverflow.com/questions/72852/ vielleicht?
3 Stimmen
Prüfen Sie meine Antwort, es ist die vollständigste bisher, andere funktionieren nicht in speziellen Fällen, zum Beispiel, wenn Sie das Skript aus einem anderen Verzeichnis oder aus einem anderen Python-Skript aufrufen. Siehe stackoverflow.com/questions/279237/
0 Stimmen
Ich hatte ein ähnliches Problem und ich fand dies und es funktioniert!! apt-get install python-profiler
5 Stimmen
Nur für den Fall, dass jemand es statisch machen will und hierher kommt (so wie ich :), kann man auch die Umgebungsvariable PYTHONPATH einrichten
0 Stimmen
Besser ist es, die Anweisungen in Lib/site.py für jeden Fall zu befolgen
0 Stimmen
Ist damit Ihre Frage beantwortet? Wie importiert man die Klasse innerhalb desselben Verzeichnisses oder Unterverzeichnisses?