我有这样的结构:
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()来指定包。
答案 0 :(得分:7)
注意:此答案不再有效,仅保留历史原因,现在正确答案是使用setuptools,更多信息https://mail.python.org/pipermail/distutils-sig/2013-March/020126.html
首先,我建议删除setuptools:
并使用distutils(standard mechanism to distribute Python packages)或distribute您还distutils2,但我认为尚未准备好,并且对于新标准{{ 3}}是如何编写setup.py的指南。
对于您的问题, distutils 中不存在find_packages()
,您必须像这样添加您的软件包:
setup(name='package',
version='0.0dev1',
description='blalal',
author='me',
packages=['package', 'package.sub_package', 'package.sub_package2'])
如果你有很多包和子包,你将不得不制作一些创建包列表的代码here是Django源代码的一个例子。
我认为使用distutils可以帮助解决您的问题,我希望这有助于:)