2012-04-22 2 views

ответ

25

Если все встречающиеся каталоги Python пакеты, то есть все они содержат __init__.py, то вы можете использовать

from ..bar_dir import bar 

Если каталоги не являются пакеты Python, вы можете сделать это, возни с sys.path, но вы не должны.

+0

это не будет работать, если вы хотите импортировать в не пакет и вы просто запускаете python из родного брата. В этом случае sys.path.append - это способ пойти – mhstnsc

+1

@mhstnsc Я бы сказал, что в этом случае вы сделали что-то не так, но если это просто какой-то взломанный скрипт, возможно, будет нормально сходить с 'sys.path'. –

+0

Неплохо, но при запуске основного модуля вы не можете выполнять относительный импорт. https://www.python.org/dev/peps/pep-0366/ – mhstnsc

12

Вы можете использовать модули sys и os для обобщенного импорта. В foo.py старте с линиями

import sys 
import os 
sys.path.append(os.path.abspath('../bar_dir')) 
import bar 
Смежные вопросы