我有这样的结构:
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/