如何用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
相关产品推荐
相关产品推荐

