python setup.py sdist只包含来自顶级模块的.py源代码

时间:2013-01-28 00:09:12

标签: python setup.py sdist

我有一个setup.py:

from setuptools import setup

setup(
      ...
      packages=['mypackage'],
      test_suite='mypackage.tests',
      ...
    )

python setup.py sdist创建一个文件,该文件仅包含顶级mypackage中的源模块,而不包括mypackage.tests或任何其他子模块。

我做错了什么?

使用python 2.7

3 个答案:

答案 0 :(得分:25)

使用find_packages() function

from setuptools import setup, find_packages

setup(
    # ...
    packages=find_packages(),
)

该函数将搜索python包(带有__init__.py文件的目录)并将其作为格式正确的列表返回。它将从与setup.py脚本相同的目录开始,但可以给出一个明确的起始目录,以及排除模式,如果你需要它来跳过一些东西。

答案 1 :(得分:3)

对于使用纯distutils而不是setuptools的人:你必须在packages参数中传递所有包和子包的列表(但不是所有子模块,它们都被检测到)。

答案 2 :(得分:3)

只需在包列表中包括所有子模块:

from setuptools import setup

setup(
      ...
      packages=['mypackage', 'mypackage.tests', 'mypackage.submodules'],
      ...
     )