我有一个setup.py:
from setuptools import setup
setup(
...
packages=['mypackage'],
test_suite='mypackage.tests',
...
)
python setup.py sdist
创建一个文件,该文件仅包含顶级mypackage中的源模块,而不包括mypackage.tests或任何其他子模块。
我做错了什么?
使用python 2.7
答案 0 :(得分:25)
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'],
...
)