2012-04-22 16 views

Odpowiedz

25

Jeśli wszystkie występujące katalogi są Python pakiety, czyli wszystkie one zawierają __init__.py, wówczas można użyć

from ..bar_dir import bar 

Jeżeli katalogi nie są pakiety Pythona, można to zrobić przez aprowizacji z sys.path, ale nie powinieneś.

+0

to nie będzie działać, jeśli chcesz zaimportować w pakiecie i nie po prostu uruchamiasz pytona od rodzeństwa. W tym przypadku sys.path.append jest sposobem na przejście na – mhstnsc

+1

@mhstnsc Powiedziałbym, że w tym przypadku zrobiłeś coś złego, ale jeśli jest to po prostu jakiś hacky skrypt, może być OK, aby zadzwonić z 'sys.path'. –

+0

Nie jest to złe, ale przy uruchomieniu głównego modułu nie można wykonać względnego importu. https://www.python.org/dev/peps/pep-0366/ – mhstnsc

12

Można użyć modułów sys i os do ogólnych importów. W foo.py początek linii

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