Използвам чужд проект, за да добавя някаква функционалност към моя, и има скрипт на Python, който искам да импортирам. Проблемът идва със структурата за импортиране на техните директории: поставих тяхната директория с проекти в подпапка под моя основен проект (трябва да остане там, за да мога да държа проекта им извън моя контрол на версиите) изглежда така:
myproject/
myscript.py
theirproject/
__init__.py
baz.py
secondlayer/
__init__.py
all.py
foo.py
bar.py
all.py е просто списък с оператори за импортиране, които импортират допълнителни скриптове от директорията на втория слой по следния начин:
from secondlayer.foo import *
from secondlayer.bar import * #etc
Бих искал да импортирам:
from theirproject.secondlayer.all import *
но това се проваля, когато python се оплаква „няма модул с име secondlayer.foo“ Опитах и следното:
from theirproject.secondlayer import all
Мога да го накарам да работи, когато поставя скрипта си в theirproject/ и импортирам всичко без префикса "theirproject", но наистина не мога да го оставя така. Мога да продължа процеса на импортиране, като импортирам foo, bar и т.н. поотделно по този начин:
from theirproject.secondlayer import foo
from theirproject.secondlayer import bar #etc
Но след това тези скриптове не успяват да импортират повече неща от други скриптове (като baz.py) на същото ниво като secondlayer, така че останах.
Какъв е правилният начин да направите това в python 2.7.6?