我有这样的结构:

setup.py
package
    __init__.py
    sub_package
        ___init__.py
    sub_package2
        __init__.py

如果我通过setup.py安装安装软件包,那么它可以很好地赞赏(通过将整个软件包复制到站点包装DIR):

site_packages
    package
        sub_package
        sub_package2

但是,如果我运行PIP安装程序包,则PIP将每个子包装安装为独立软件包:

site-packages
    package
    sub_package
    sub_package2

我该如何避免这种情况?我使用setuptools的find_packages()指定软件包。

有帮助吗?

解决方案

注意:此答案不再有效,仅出于历史原因而保存,现在正确的答案是使用setuptools,更多信息 https://mail.python.org/pipermail/distutils-sig/2013-march/020126.html


首先,我建议放下setuptools:

alt text

并使用 dist (哪一个是 分发Python包装的标准机制) 或者 分发 你也有 distutils2 但是我认为还没有准备好,并且出于新标准 这里 是如何编写setup.py的指南。

出于您的问题 find_packages() 不存在 dist 您将不得不这样添加您的包裹:

setup(name='package',
      version='0.0dev1',
      description='blalal',
      author='me',
      packages=['package', 'package.sub_package', 'package.sub_package2'])

而且,如果您有很多软件包和子软件包,则必须制作一些代码来创建软件包列表 这里 是Django源的一个示例。

我认为使用distutils可以帮助您解决问题,我希望这可以帮助:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top