gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:24:58 25 4
gpt4 key购买 nike

考虑以下包结构:

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 打包时,由此产生的轮子:
  • 包含 py.typed文件,这很好
  • 包含 tests文件夹,而应该根据 the find_packages doc 排除它.

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

    最佳答案

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

    终于找到罪魁祸首:是setuptools_scm之间的隐藏交互和 include_package_data=True旗帜。

    本身,include_package_data=True不做 tests目录被包含在轮子中。但是如果 setuptools_scm已安装且该文件夹受版本控制(并且 tests 目录在 git 管理的文件列表中),然后是 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 非常简单)和 this related issue and workaround (解决方法似乎也适用于轮子,而不仅仅是 sdist)。

    关于python - 为什么我不能使用 `tests` 从我的 python 轮中排除 `exclude` 目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61274967/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com