setuptools如何决定为sdist/bdist保留哪些文件?

joe*_*ker 6 python distutils setuptools

我正在使用一个在setup.py 中使用namespace_packages和使用的Python包find_packages():

from setuptools import setup, find_packages
setup(name="package",
    version="1.3.3.7",
    package=find_packages(),
    namespace_packages=['package'], ...)
Run Code Online (Sandbox Code Playgroud)

它不在源代码管理中,因为它是一组上游组件.没有清单.

当我运行时,python setup.py sdist我得到package/目录下大多数文件的tarball,但是不包含任何不包含.py文件的目录.

setup.py包含和排除内置发行版的内容的默认规则是什么?我通过添加一个MANIFEST.in来解决我的问题

recursive-include package *
Run Code Online (Sandbox Code Playgroud)

但是我想了解默认情况下setuptools和distutils正在做什么.

Jas*_*ker 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']...

)
Run Code Online (Sandbox Code Playgroud)