12

Przez ostatnią godzinę zmagałem się z importem w moim pakiecie.Skrypt względnego importu w języku Python dwa poziomy w górę

Mam strukturę katalogów tak:

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 

Chcę uzyskać dostęp do kodu w script_b.py jak również kod z script_c.py od script_a.py. Jak mogę to zrobić?

Jeśli mogę umieścić prosty import script_b wewnątrz script_a.py, kiedy biegnę

from main_package.folder_1.folder_2 import script_b 

ja spotkała się z

ImportError: no module named "script_b" 

dostępu do script_c.py, nie mam pojęcia. Nie byłem w stanie znaleźć żadnych informacji o dwa poziomy dostępu do plików, ale wiem, że mogę importować pliki o jeden poziom w górę z

from .. import some_module 

Jak mogę uzyskać dostęp zarówno te pliki z script_a.py?

+0

Możliwy duplikat [Jak osiągnąć ten względny importu w python] (http://stackoverflow.com/questions/4655526/how-to-accomplish-this-relative-import-in-python) –

Odpowiedz

13

Aby uzyskać dostęp script_c i script_b z script_a, użyłbyś:

from ...folder_3 import script_c 
from . import script_b 

lub jeśli używasz python3 można importować script_b z script_a używając tylko:

import script_b 

jednak zalecana prawdopodobnie używa bezwzględnego importu:

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

Zobacz także: Absolute vs Relative imports

+0

Co o dostępie ' script_b'? –

+0

Zaktualizowano odpowiedź – tobspr

Powiązane problemy