Dieses Snippet stammt von einer früheren Antwort hier auf SO. Es ist ungefähr ein Jahr alt (und die Antwort wurde nicht akzeptiert). Ich bin neu in Python und ich finde den Systempfad einen echten Schmerz. Ich habe ein paar Funktionen in Skripten in verschiedenen Verzeichnissen geschrieben, und ich würde gerne in der Lage sein, sie in neue Projekte zu importieren, ohne durch die Ringe springen zu müssen.Ist dies der richtige Weg, um Python-Skripte in beliebigen Ordnern zu importieren?
Dies ist der Code-Schnipsel:
def import_path(fullpath):
""" Import a file with full path specification. Allows one to
import from anywhere, something __import__ does not do.
"""
path, filename = os.path.split(fullpath)
filename, ext = os.path.splitext(filename)
sys.path.append(path)
module = __import__(filename)
reload(module) # Might be out of date
del sys.path[-1]
return module
Sein von hier: How to do relative imports in Python?
ich ein Feedback, ob ich es oder nicht verwenden kann, möchte - und wenn es irgendwelche unerwünschten Nebenwirkungen, die ist für einen Neuling vielleicht nicht offensichtlich.
Ich beabsichtige es so etwas zu verwenden:
import_path(/home/pydev/path1/script1.py)
script1.func1()
etc
Ist es ‚sicher‘ die Funktion in der Art und Weise zu verwenden, ich beabsichtige?
In 3.3 wurde imp zugunsten von importlib eingestellt. In 3.2 scheint es jedoch keinen gleichwertigen Gebrauch von importlib zu geben. Wenn Sie also in beiden Umgebungen laufen müssen, sparen Sie sich Kopfschmerzen und bleiben Sie bei Imp. – Yourpalal