2017-01-03 3 views
0

Lets sagen, dass ich einen Verzeichnisbaum haben, die wie folgt aussieht:Wie importiere ich ein Paket aus einem anderen Verzeichnis im selben Programm?

main - 
    | 
    lib- 
     | 
     core- 
      | 
     fun- 
      | 
      some_file 
     stuff- 
      | 
     another_file 

Wie konnte ich die Module von some_file in another_file importieren? Jedesmal versuche ich, den Import zu tun (ja ich weiß, über __ init__.py) Ich erhalte eine Fehlermeldung:

Traceback (most recent call last): 
    File "file.py", line 6, in <module> 
    from some_file import some_method 
ImportError: No module named some_file 

Ist es möglich, die Module in einer anderen Datei zu importieren?

+0

können Sie den Code zeigen, wie Sie versucht haben, das Modul zu importieren – depperm

+0

@depperm gibt es keine Möglichkeit, 'os.path.join' zu verwenden, um dies zu tun? – User9123

Antwort

1

Sie können mit absoluten oder relativen Importen importieren, wenn alle Verzeichnisse, die Sie durchlaufen, Python-Pakete sind (mit der Datei __init__.py).

Unter der Annahme, dass Sie Ihr Programm aus dem Verzeichnis ausgeführt werden, in dem main Paket ist, dann würden Sie some_file Modul importieren mit:

import main.lib.core.fun.some_file 

Andernfalls müssen Sie, bevor Sie importieren zu Python-Pfad anhängen:

import sys 
sys.path.append("......main/lib/core") 

import fun.some_file 

Das zweite Beispiel geht davon aus, dass Spaß ein Python-Paket mit __init__.py Datei darin ist.

+0

Danke, das hat funktioniert – User9123

0

einfach eine __init__.py Datei in das Verzeichnis hinzufügen, um es als Modul gesehen machen werden:

main - 
    | 
    lib- 
     | 
     core- 
      | 
     fun- 
      | 
      some_file 
      __init__.py 
     stuff- 
      | 
     another_file 

Die __init__.py eine leere Datei sein kann, alles, was ist wichtig ist, dass es existiert. Dann können Sie tun import fun.some_file

Verwandte Themen