You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让setup.py在python -m build构建时正确引用源码仓库中的其他文件

问题根源

执行python -m build构建Python包时,默认仅会将配置声明的源码、README、setup相关文件复制到临时构建目录,你项目中的requirements目录未被纳入打包文件清单,因此setup.py执行时读取文件报错。而pip install -e .、git依赖安装是直接基于完整仓库目录执行,不会触发构建时的文件筛选逻辑,因此运行正常。

解决方案

步骤1:修正setup.py中的路径引用

首先将相对路径改为基于setup.py文件位置的绝对路径,避免因执行命令的工作目录变化导致的路径错误:

# 将原来的 requirements_dir = Path("requirements") 替换为
requirements_dir = Path(__file__).parent.resolve() / "requirements"

步骤2:将requirements目录纳入打包文件清单

二选一即可,优先推荐第一种兼容性更高:

方法1:使用MANIFEST.in配置(兼容所有setuptools版本)

在项目根目录新建名为MANIFEST.in的文件,写入以下内容:

recursive-include requirements *.txt

该配置会明确告知打包工具,构建sdist安装包时必须包含requirements目录下所有txt格式文件。

方法2:在pyproject.toml中配置(适合使用新版setuptools的项目)

如果项目根目录存在pyproject.toml文件,添加以下配置即可:

[tool.setuptools]
include = ["requirements/**/*.txt"]

验证方法

配置完成后执行python -m build --sdist,解压dist目录下生成的.tar.gz包,检查包内是否存在requirements目录及对应的txt文件,确认存在后即可正常执行完整构建上传到PyPI。

内容的提问来源于stack exchange,提问作者Philip Couling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:36:03