2014-01-09 13 views
9

Ich habe eine Verzeichnisstruktur für meine Python-Anwendung, wo im Hauptordner habe ich einen Ordner namens Handler und in dieser Datei habe ich eine base.py, dass alle Handler erben sollte. Ich habe auch einen Ordner namens Benutzer, der alle Handler für Benutzer enthält.Python importiert aus dem Verzeichnis über

Mein Problem ist, ich kann die Basis in keiner Datei im Benutzerordner importieren, kann aber aus dem Ordner Benutzer importieren. Ich weiß, dass ich so etwas wie unten

from ..handlers import *  

zu tun haben, aber dass aus irgendeinem Grund nicht funktioniert alles, was ich zu tun versuche zu importieren base.py in Dateien im Benutzerverzeichnis und andere directorys ich zu einem späteren hinzufügen Datum.

+0

Können Sie bitte klarstellen, was "Ich kann die Basis in keiner Datei im Benutzerordner importieren, aber kann aus dem Benutzerordner importieren" bedeutet? Kannst du auch klären was "aus irgendeinem Grund" bedeutet? Siehe http://stackoverflow.com/questions/4826955/import-from-different-directories-in-python Hilft es? – darthbith

+0

Ich habe eine Hauptdatei, die ich mit'from handlers.users import * 'aus der Benutzerdatei importieren kann, aber base.py in die Dateien im Benutzerordner importieren muss. – bobthemac

+0

Wo befindet sich die Hauptdatei? Es scheint auch, dass Sie uns nicht die gesamte relevante Verzeichnisstruktur gezeigt haben ... Vielleicht verstehe ich Ihre Beschreibung nicht, wenn das der Fall ist, tut es mir leid. Kannst du bitte den Grund dafür posten, dass das nicht funktioniert? I.e. der Fehlercode oder Stacktrace ... – darthbith

Antwort

9
import sys 
sys.path.append('/your/dir/goes/here') 
from base import foo 

So etwas sollte Sie erlauben, Sachen aus einem beliebigen Verzeichnis Ihrer Wahl zu importieren.

+0

kann es am Anfang des Pfades anstelle des Endes einfügen möchten, aber ja +1 –

+0

Dies funktionierte nicht, immer noch ein kein Modul namens Fehler. Ich sollte das auch nicht tun, da ich nicht sicher bin, ob es mit der Google App Engine kompatibel ist, auf der es läuft. – bobthemac

+0

Hinweis: Sie können relative Pfade (zB './ '' und '../'') mit dieser Methode verwenden, zusätzlich zu absoluten Pfaden (zB ''/ home/username/code'') –

1

Um den relativen Import zu aktivieren, fügen Sie main/__init__.py hinzu, um main in ein Python-Paket zu machen. Das übergeordnete Verzeichnis von main sollte in sys.path sein.

Verwandte Themen