Python:pip在根目录安装子包

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

你能粘贴setup.py的内容吗? - merwok
1个回答

7

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


首先我建议放弃使用setuptools:

alt text

而是使用distutils(它是分发Python软件包的标准机制)或distribute,你还可以使用distutils2,但我认为它还没有准备好,对于新的标准,这里提供了编写setup.py文件的指南。

对于你的问题,find_packages()distutils中不存在,你需要像这样添加你的软件包:

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

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

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


谢谢。如果无法使用setuptools,我会尝试使用distutils。 - Vladimir Mihailenco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接