我有这样的结构:

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()来指定软件包。

最佳答案

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

首先,我建议您删除setuptools:

并使用distutils(即standard mechanism to distribute Python packages)或distribute,您也可以使用distutils2,但我认为还没有准备好,对于新的标准here是如何编写setup.py的指南。

对于您的问题,find_packages() distutils 中不存在,因此您必须像这样添加软件包:

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

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

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

关于Python:pip在根目录中安装子软件包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4134209/

10-15 10:24