2010-11-09 114 views
4

我有这样的结构:的Python:PIP安装在根目录子包

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

如果我通过setup.py安装包安装,那么它的工作原理所理解的(通过复制整个包到站点包目录):

site_packages 
    package 
     sub_package 
     sub_package2 

但是,如果我运行PIP安装包,然后PIP安装每个子包作为独立的包:

site-packages 
    package 
    sub_package 
    sub_package2 

我该如何避免这种情况?我使用setuptools中的find_packages()来指定包。

+0

可以粘贴setup.py的内容是什么? – 2012-02-11 03:36:15

回答

7

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


所有我会建议放弃第一setuptools的:

alt text

并使用任一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可以帮助你解决问题,我希望这能帮助:)

+0

谢谢。如果没有办法继续使用setuptools,我会尝试distutils。 – 2010-11-09 16:15:47

相关问题