У нас есть что-то похожее на это:Python EGG: включают верхнего уровня реж
/dir/
subdir1/
subdir1-1/
(some module)
setup.py
subdir1-2/
(another module)
subdir2/
(another module)
Код из subdir1-2 использования (= импорт) код из модуля subdir2. Все в порядке, пока мы не хотим упаковать subdir2 в EGG (из subdir1-1) и повторно использовать его. Кажется, EGG не может упаковать что-либо из более высокого уровня.
Наш setup.py:
data_files=[
(root, [os.path.join(root, f) for f in files])
for root, _, files in itertools.chain(
os.walk('some_module'),
os.walk('../subdir2'), # DOES NOT WORK!
os.walk('../../subdir2), # DOES NOT WORK!
os.walk(os.path.join(current_dir, '..', 'subdir2')), # DOES NOT WORK
os.walk(os.path.join(current_dir, '..', '..', 'subdir2')) # DOES NOT WORK AS WELL!
)
],
Мы также попытались добавить модуль к sys.path - не работает. Любой модуль, который находится во внутреннем каталоге, работает хорошо. Любой модуль из каталога более высокого уровня - не работает.
Я пишу это по памяти, поэтому, пожалуйста, не смотрите на ошибки в коде, который я изложил выше, - в нашем коде мы написали 100% правильный код - никаких опечаток, нигде неправильного уровня (например .. вместо из ../ ..).
Проблема заключается именно в этом: выходы более высокого уровня не входят в состав EGG; или мы не можем их использовать.
Ответ отсюда: top-level package handling with setuptools (or another python egg builder) не работает.
Scrapyd 0.24, Python 2.7 (стандартный пакет Ubuntu 14.04 x64).
Спасибо!
P.S. Мы используем Scrapyd, который упаковывает код в EGG. И очень тяжело отлаживать такое «умное» решение (в конце концов, кто решил использовать такое решение для ночного видения? Если бы мы могли выбросить Scrapyd ...).