12

Ho sofferto con le importazioni nel mio pacchetto per l'ultima ora.Script di importazione relativa Python due livelli su

Ho una struttura di directory in questo modo:

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 

voglio accedere codice script_b.py così come codice script_c.py da script_a.py. Come posso fare questo?

Se metto un semplice import script_b all'interno script_a.py, quando ho eseguito

from main_package.folder_1.folder_2 import script_b 

sto incontrato un

ImportError: no module named "script_b" 

Per accedere script_c.py, non ho idea. Non ero in grado di trovare tutte le informazioni sull'accesso ai file due livelli, ma so di poter importare i file di un livello con

from .. import some_module 

Come posso accedere entrambi questi file da script_a.py?

+0

Possibile duplicato di [Come eseguire questa importazione relativa in python] (http://stackoverflow.com/questions/4655526/how-to-accomplish-this-relative-import-in-python) –

risposta

13

Per accedere script_c e script_b da script_a, si può usare:

from ...folder_3 import script_c 
from . import script_b 

Oppure, se si utilizza python3, è possibile importare script_b da script_a da solo utilizzando:

import script_b 

Tuttavia, si dovrebbe probabilmente usa le importazioni assolute:

Vedere anche: Absolute vs Relative imports

+0

Informazioni sull'accesso ' script_b'? –

+0

Aggiornamento della risposta – tobspr