12

Ich habe in der letzten Stunde mit Importen in meinem Paket gekämpft.Python Relativ-Import-Skript zwei Ebenen höher

Ich habe eine Verzeichnisstruktur wie so bekam:

main_package 
| 
| __init__.py 
| folder_1 
| | __init__.py 
| | folder_2 
| | | __init__.py 
| | | script_a.py 
| | | script_b.py 
| 
| folder_3 
| | __init__.py 
| | script_c.py 

I-Code in script_b.py sowie Code aus script_c.py von script_a.py zugreifen möchten. Wie kann ich das machen?

Wenn ich legte eine einfache import script_b innen script_a.py, wenn ich

from main_package.folder_1.folder_2 import script_b 

betreibe ich mit einem für den Zugriff auf script_c.py

ImportError: no module named "script_b" 

erfüllt bin, ich habe keine Ahnung. Ich war nicht in der Lage, alle Informationen finden über Dateien zwei Ebenen zugreifen, aber ich weiß, ich kann Dateien eine Ebene importieren up mit

from .. import some_module 

Wie kann ich diese beiden Dateien aus script_a.py zugreifen?

+0

Mögliche Duplikate von [Wie diesen relativen Import in Python zu erreichen] (http://stackoverflow.com/questions/4655526/how-to-accomplish-this-relative-import-in-python) –

Antwort

13

Um script_c und script_b von script_a zuzugreifen, verwenden Sie:

from ...folder_3 import script_c 
from . import script_b 

Oder wenn Sie python3 verwenden, können Sie script_b von script_a durch nur mit importieren:

import script_b 

Sie sollten jedoch Wahrscheinlich verwenden Sie absolute Importe:

from mypackage.folder_3 import script_c 
from mypackage.folder1.folder2 import script_b 

Siehe auch: Absolute vs Relative imports

+0

Was ist mit dem Zugriff auf ' script_b'? –

+0

Die Antwort wurde aktualisiert – tobspr

Verwandte Themen