Вот структура каталога:Как импортировать скрипт Python из каталога для сиблинга?
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
Как импортировать bar.py в foo.py?
Вот структура каталога:Как импортировать скрипт Python из каталога для сиблинга?
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
Как импортировать bar.py в foo.py?
Если все встречающиеся каталоги Python пакеты, то есть все они содержат __init__.py
, то вы можете использовать
from ..bar_dir import bar
Если каталоги не являются пакеты Python, вы можете сделать это, возни с sys.path
, но вы не должны.
это не будет работать, если вы хотите импортировать в не пакет и вы просто запускаете python из родного брата. В этом случае sys.path.append - это способ пойти – mhstnsc
@mhstnsc Я бы сказал, что в этом случае вы сделали что-то не так, но если это просто какой-то взломанный скрипт, возможно, будет нормально сходить с 'sys.path'. –
Неплохо, но при запуске основного модуля вы не можете выполнять относительный импорт. https://www.python.org/dev/peps/pep-0366/ – mhstnsc
Вы можете использовать модули sys
и os
для обобщенного импорта. В foo.py
старте с линиями
import sys
import os
sys.path.append(os.path.abspath('../bar_dir'))
import bar
См: https://stackoverflow.com/questions/6323860/sibling-package-imports/27878845#27878845 –