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

如何用setuptools将根目录文件/目录打包进wheel?

解决方法

1. 先检查MANIFEST.in的内容

得确保你的MANIFEST.in已经正确包含目标文件和文件夹,内容应该是:

include file.txt
recursive-include other-folder *

2. 修改pyproject.toml配置

光靠MANIFEST.in不够,setuptools默认只打包带__init__.py的Python包(也就是myproject),得在pyproject.toml里额外配置,把非包内容也加进去:

方式一:用传统的data_files

在pyproject.toml里添加以下内容:

[tool.setuptools]
packages = ["myproject"]
include-package-data = true
data_files = [
    # 把file.txt安装到site-packages根目录
    ("", ["file.txt"]),
    # 把other-folder里的文件安装到site-packages/other-folder下
    ("other-folder", ["other-folder/more-stuff.txt"])
]

方式二:用更灵活的data-files配置(setuptools 61.0以上版本支持,推荐)

这种写法支持通配符,不用逐个列文件:

[tool.setuptools]
packages = ["myproject"]
include-package-data = true

[tool.setuptools.data-files]
# 根目录的file.txt安装到site-packages根
"" = ["file.txt"]
# 整个other-folder目录安装到site-packages/other-folder
"other-folder" = ["other-folder/**"]

3. 重新打包安装

执行下面的命令重新生成wheel包并安装:

pip wheel . -w dist/
pip install dist/你的项目名-*.whl

这样安装之后,file.txt和other-folder就会和myproject一起出现在Python的site-packages目录里,达到你要的和pip install -e .类似的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:34:57