5

我有这样的结构:

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

如果我通过 setup.py install 安装包,那么它可以正常工作(通过将整个包复制到 site-packages 目录):

site_packages
    package
        sub_package
        sub_package2

但是如果我运行 pip install package,那么 pip 会将每个子包安装为独立包:

site-packages
    package
    sub_package
    sub_package2

我怎样才能避免这种情况?我使用 setuptools 中的 find_packages() 来指定包。

4

1 回答 1

7

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


首先,我会建议放弃 setuptools :

替代文字

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

对于您的问题,distutilsfind_packages()中不存在,您必须像这样添加您的包:

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

如果你有很多包和子包,你将不得不编写一些代码来创建包列表,这里是 Django 源代码的一个示例。

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

于 2010-11-09T14:08:03.513 回答