如何通过setuptools_scm在pyproject.toml中包含非.py文件?
解决setuptools打包时包含非.py文件的问题
你需要在pyproject.toml的[tool.setuptools_scm]部分添加find_files配置,指定要包含的非Python文件模式,就能把extra_file.pem纳入安装包。
修改后的pyproject.toml配置
[build-system] requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"] build-backend = "setuptools.build_meta" [project] name = "ltpy" dynamic = ["version"] readme = "README.md" requires-python = ">=3.7" classifiers = [ "Programming Language :: Python :: 3", ] dependencies = [] [tool.setuptools_scm] write_to = "automation/ltpy/_version.py" root= "../../" # 添加find_files配置,指定要包含的文件 find_files = [ "**/*.py", # 保留所有Python源码文件 "**/*.pem" # 匹配所有.pem文件,也可精确指定路径"ltpy/extra_file.pem" ] [tool.setuptools] include-package-data = true [tool.setuptools.packages.find] where = ["ltpy"]
配置说明
find_files是setuptools_scm用来定义打包文件范围的配置项,支持glob通配符:**/*.pem会匹配项目所有子目录下的.pem文件- 若只想包含目标文件,直接写相对路径
ltpy/extra_file.pem(对应你的文件夹结构,从pyproject.toml所在目录到目标文件的路径)
- 保留
**/*.py是为了确保所有Python源码文件不会被遗漏
验证方法
- 清理旧构建产物:删除
dist、build目录以及*.egg-info文件夹 - 执行
python -m build构建包,或直接用pip install .安装到当前环境 - 查看Python环境
site-packages/ltpy目录,确认extra_file.pem存在
内容的提问来源于stack exchange,提问作者user1598231
相关产品推荐
相关产品推荐

