You need to enable JavaScript to run this app. Python打独立SDK包时,如何将非.py的CSV、Parquet文件纳入分发包
优惠活动
大模型
产品
解决方案
定价
更多

Python打独立SDK包时,如何将非.py的CSV、Parquet文件纳入分发包

非.py附属文件未打入Python分发包的解决方案

核心问题定位

你当前配置无效的原因有两个:

  • package_data的键使用了发行版名称(eu-taxonomy-sdk带连字符,本身不符合Python包命名规范,也不是你通过find_packages(where='src')扫描到的实际导入包名),导致setuptools完全无法匹配到对应包目录,配置直接失效。
  • 仅通过package_data配置无法保证sdist源码分发包会包含非.py文件,老版本setuptools的源码打包逻辑默认仅扫描.py文件,需要补充MANIFEST.in规则。

具体实现步骤

1. 确认实际Python包名

你的项目配置了package_dir={'': 'src'}和find_packages(where='src'),先查看src目录下的实际包目录名(例如通常是eu_taxonomy_sdk这类下划线格式,Python包名不允许连字符),后续所有路径配置都基于这个实际包名。

2. 修正setup.py中的package_data配置

把原配置里的package_data键替换为实际包名,路径写相对于包根目录的规则,支持通配符匹配需要的CSV、Parquet等文件:

# 假设实际包名为 eu_taxonomy_sdk,替换为你自己的实际包名即可
package_data={
    'eu_taxonomy_sdk': [
        'config/*',  # 匹配包根目录下config文件夹内的所有文件
        'category/config/*',  # 匹配category子包下config文件夹内的所有文件
        # 如需递归匹配所有子目录的指定后缀文件,可追加:
        # '**/*.csv', '**/*.parquet'
    ]
}

3. 新增MANIFEST.in文件(项目根目录与setup.py同级)

这个文件用来指定源码分发包(sdist)需要额外包含的非.py文件,内容示例:

# 递归包含src目录下所有后缀为csv、parquet的文件
recursive-include src *.csv *.parquet
# 或者直接指定需要打包的config目录
# graft src/eu_taxonomy_sdk/config
# graft src/eu_taxonomy_sdk/category/config

4. 重新生成分发包

清理旧的打包缓存后重新执行命令:

# 清理旧的build/dist目录、egg-info缓存
rm -rf build dist *.egg-info src/*.egg-info
# 重新生成源码包
python setup.py sdist
# 如需生成wheel包可追加
python setup.py bdist_wheel

验证方式

解压生成的dist/xxx.tar.gz源码包,查看对应config目录下的CSV、Parquet文件是否存在即可确认配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 21:36:01