【发布时间】:2015-08-27 13:02:10
【问题描述】:
我们有类似的东西:
/dir/
subdir1/
subdir1-1/
(some module)
setup.py
subdir1-2/
(another module)
subdir2/
(another module)
来自 subdir1-2 的代码使用来自 subdir2 模块的 (=imports) 代码。一切都很好,直到我们想要将 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 软件包)。
谢谢!
附:我们使用 Scrapyd 将代码打包到 EGG 中。而且调试这样一个“智能”解决方案真的很痛苦(毕竟,谁决定使用这样一个噩梦般的部署解决方案?要是我们能扔掉 Scrapyd 就好了……)。
【问题讨论】: