setuptools如何决定sdist/bdist保留哪些文件?
我正在开发一个Python包,使用了namespace_packages
和find_packages()
,在setup.py文件里是这样写的:
from setuptools import setup, find_packages
setup(name="package",
version="1.3.3.7",
package=find_packages(),
namespace_packages=['package'], ...)
这个包没有放在源代码管理里,因为它是一些上游组件的集合。并且没有MANIFEST文件。
当我运行python setup.py sdist
时,我得到一个压缩包,里面包含了package/
目录下大部分的文件,但任何不包含.py
文件的目录都被忽略了。
那么,setup.py
默认情况下是如何决定包含和排除哪些内容在构建的分发包中的呢?我通过添加一个MANIFEST.in
文件来解决了我的问题,内容是:
recursive-include package *
但我想了解一下setuptools和distutils默认是怎么处理这些的。
1 个回答
4
你需要添加一个 package_data 指令。比如,如果你想包含 .txt 或 .rst 结尾的文件:
from setuptools import setup, find_packages
setup(name="package",
version="1.3.3.7",
package=find_packages(),
include_package_data=True,
namespace_packages=['package'],
package_data = {
# If any package contains *.txt or *.rst files, include them:
'': ['*.txt', '*.rst']...
)