Я использую чужой проект, чтобы добавить некоторые функции в свой, и есть скрипт Python, который я хочу импортировать. Проблема связана со структурой импорта их каталогов: я поместил каталог их проекта в подпапку в моем основном проекте (должен оставаться там, чтобы я мог держать их проект вне контроля версий), это выглядит так:
myproject/
myscript.py
theirproject/
__init__.py
baz.py
secondlayer/
__init__.py
all.py
foo.py
bar.py
all.py — это просто список операторов импорта, которые импортируют дополнительные скрипты из каталога secondlayer, например:
from secondlayer.foo import *
from secondlayer.bar import * #etc
Я хотел бы импортировать:
from theirproject.secondlayer.all import *
но это не удается, когда python жалуется на «нет модуля с именем secondlayer.foo». Я также пробовал следующее:
from theirproject.secondlayer import all
Я могу заставить его работать, когда помещаю свой скрипт в их проект/ и импортирую все без префикса «их проект», но я действительно не могу этого сделать. Я могу продолжить процесс импорта, импортируя foo, bar и т. д. по отдельности, например так:
from theirproject.secondlayer import foo
from theirproject.secondlayer import bar #etc
Но затем эти скрипты не могут импортировать больше материала из других скриптов (например, baz.py) на том же уровне, что и второй слой, поэтому я застрял.
Как правильно это сделать в python 2.7.6?