2012-04-22 11 views

risposta

25

Se tutte le directory che si verificano sono Python pacchetti, vale a dire che tutti contengono __init__.py, quindi è possibile utilizzare

from ..bar_dir import bar 

Se le directory non sono pacchetti Python, è possibile farlo da fare in giro con sys.path, ma non dovresti.

+0

questo non funzionerà se si desidera importare in un pacchetto e non hai appena eseguito un pitone da un fratello. In questo caso sys.path.append è la strada da percorrere – mhstnsc

+1

@mhstnsc Direi che in questo caso hai fatto qualcosa di sbagliato, ma se si tratta solo di uno script hacky potrebbe andare bene con 'sys.path'. –

+0

Non è sbagliato ma quando si esegue il modulo principale non è possibile effettuare importazioni relative. https://www.python.org/dev/peps/pep-0366/ – mhstnsc

12

È possibile utilizzare i moduli sys e os per le importazioni generalizzate. In foo.py inizio con le linee

import sys 
import os 
sys.path.append(os.path.abspath('../bar_dir')) 
import bar 
Problemi correlati