为什么我不能使用`exclude`从我的python轮子中排除`tests`目录?

问题描述 投票:0回答:1

请考虑以下包结构:

enter image description here

具有以下setup.py内容:

from setuptools import setup, find_packages

setup(
    name='dfl_client',
    packages=find_packages(exclude=['*tests*']),
    include_package_data=True,
    package_data={"": ['py.typed', '*.pyi']},
)

[当我使用python setup.py sdist bdist_wheel打包时,得到的轮子:

我花了数小时试图理解为什么没有成功。特别是因为它似乎适用于其他项目!

python setuptools packaging python-wheel exclude
1个回答
0
投票

((我花了很多时间试图理解这个愚蠢的问题,我回答了我自己的问题,希望可以节省其他面临相同问题的时间)

我终于找到了罪魁祸首:这是find_packagessetuptools_scm标志之间的隐藏交互。

include_package_data=True本身不会使include_package_data=True目录包含在转盘中。但是,如果安装了tests且该文件夹受版本控制(并且setuptools_scm目录位于git管理的文件的列表中),则似乎不再考虑tests指令。

所以解决方案是简单地删除exclude,当存在include_package_data=True时实际上并不需要:

package_data

请参见from setuptools import setup, find_packages setup( name='dfl_client', packages=find_packages(exclude=['*tests*']), package_data={"": ['py.typed', '*.pyi']}, ) (实际上对setuptools doc on including files非常简单)和include_package_data(该解决方法似乎也适用于方向盘,不仅限于sdist)。

© www.soinside.com 2019 - 2024. All rights reserved.