首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python EGG:包含顶级目录

Python EGG:包含顶级目录
EN

Stack Overflow用户
提问于 2015-06-12 01:25:39
回答 1查看 263关注 0票数 0

我们有类似的东西:

代码语言:javascript
复制
/dir/
    subdir1/
           subdir1-1/
                    (some module)
                    setup.py
           subdir1-2/
                    (another module)
    subdir2/
           (another module)

subdir1-2中的代码使用(=imports) subdir2模块中的代码。一切都很好,直到我们想要将subdir2打包到EGG中(从subdir1-1)并重用它。似乎EGG不能从更高级别的目录中打包任何东西。

我们的setup.py:

代码语言:javascript
复制
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%正确的代码-没有输入错误,没有错误的级别目录(例如..而不是../..)。

问题就是这样:更高级别的dirs没有被包含在代码中;或者我们不能使用它们。

这里的答案是:top-level package handling with setuptools (or another python egg builder)不起作用。

Scrapyd0.24,Python2.7(标准Ubuntu14.04 x64包)。

谢谢!

另外,我们使用的是Scrapyd,它将代码打包成鸡蛋。调试这样一个“聪明”的解决方案真的很痛苦(毕竟,谁决定使用这样一个噩梦般的部署解决方案呢?如果我们能扔掉Scrapyd就好了。

EN

回答 1

Stack Overflow用户

发布于 2015-06-20 02:15:58

将setup.py移动到/dir/,并相应地重写所有内容。

它的工作方式subdir1-1是你的构建树的根,所以不,你不能超过它。也可以在生成的代码中工作,所以你不能包含更高级别的目录,如果你这样做了,你就不能使用它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30787475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档