2015-02-17 48 views
1

我有会(简体)结构的包看起来像:如何使Python setuptools的发现顶层模块

mypackage/ 
    __init__.py 
    setup.py 
    module1.py 
    module2.py 
    mysubpackage/ 
     __init__.py 
     mysubmodule1.py 
     mysubmodule2.py 

我使用的是配置setup.py是这样的:

from setuptools import setup, find_packages 

setup(
    name = "mypackage", 
    version = "0.1", 
    author = "Foo", 
    author_email = "[email protected]", 
    description = ("My description"), 
    packages=find_packages(), 
) 

find_packages()的默认where参数是'.',但它不包含我的顶级模块(module1.py和module2.py)。但是,运行python setup.py build时会添加所有子子模块和子包。

我怎样才能获得顶级Python模块,而无需将setup.py提高一级?

+3

为什么你不想移动'setup.py'?它应该在包裹外面。 – jonrsharpe 2015-02-17 23:17:00

+0

公平地说,'setup.py'应该向上移动一级,并且需要通过正确配置'setup.py'来安装所有其他脚本/包/模块。应该是这样的。 – 2015-02-17 23:17:22

+0

'mypackage'实际上是一个django应用程序,我希望在应用程序内部有setup.py以将其提交到应用程序的源代码中,并避免将它放在我的django项目中。 – Caumons 2015-02-17 23:18:43

回答

1

谢谢大家的回复。

最后,我添加了一个包含mypackage和setup.py模块的目录(不是Python包)。结构现在看起来如下:

myapp/ 
    setup.py 
    mypackage/ 
     __init__.py 
     module1.py 
     module2.py 
     mysubpackage/ 
      __init__.py 
      mysubmodule1.py 
      mysubmodule2.py 

现在使用find_packages()按预期工作。谢谢!