805 Stimmen

Importieren eines Moduls aus einem relativen Pfad

Wie importiere ich ein Python-Modul unter Angabe seines relativen Pfads?

Zum Beispiel, wenn dirFoo enthält Foo.py y dirBar y dirBar enthält Bar.py wie kann ich importieren Bar.py in Foo.py ?

Hier ist eine visuelle Darstellung:

dirFoo\
    Foo.py
    dirBar\
        Bar.py

Foo möchte einbeziehen Bar aber die Umstrukturierung der Ordnerhierarchie ist keine Option.

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

-4voto

californium Punkte 11

Dies funktioniert ebenfalls und ist viel einfacher als alles, was mit dem sys Modul:

with open("C:/yourpath/foobar.py") as f:
    eval(f.read())

1 Stimmen

Wenn der OP einen Pfad hart kodieren wollte, könnte er diesen Pfad einfach in den PYTHONPATH einfügen. Ich denke, der Punkt ist dabei in einer Weise, die nicht hardcode einen Pfad, da es irgendwo sonst brechen würde.

-18voto

SuperFamousGuy Punkte 65

Nennen Sie mich übervorsichtig, aber ich mache meine Dateien lieber portabel, denn es ist nicht sicher, dass sie sich auf jedem Computer immer am selben Ort befinden. Ich persönlich lasse den Code zuerst den Dateipfad nachschlagen. Ich benutze Linux, also würde mein Code so aussehen:

import os, sys
from subprocess import Popen, PIPE
try:
    path = Popen("find / -name 'file' -type f", shell=True, stdout=PIPE).stdout.read().splitlines()[0]
    if not sys.path.__contains__(path):
        sys.path.append(path)
except IndexError:
    raise RuntimeError("You must have FILE to run this program!")

Es sei denn, Sie haben vor, diese zusammen zu verpacken. Aber wenn das der Fall ist, brauchen Sie nicht wirklich zwei separate Dateien.

1 Stimmen

Dateien werden immer auf jedem Computer an der gleichen Stelle sein, wenn ein relativer Pfad angegeben wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X