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

python setup.py打包触发TypeError expected string报错问题求解

报错原因
  • 第一个TypeError异常:find_packages() 本身的返回值就是字符串列表类型,你额外加了一层方括号包裹,相当于把返回的列表又套了一层列表,最终packages参数拿到的值是[['spark_jobs']]。setuptools在校验包名时会遍历packages里的元素,预期拿到字符串,实际拿到了嵌套的列表,所以触发类型错误。
  • 手动设置packages=['spark_jobs']后打包为空的常见原因:
    1. 项目目录结构不符合要求:setup.py需要和spark_jobs文件夹处于同级目录,且spark_jobs根目录下必须存在__init__.py文件(可为空,用于setuptools识别这是一个Python包)
    2. 存在排除规则冲突:如果开启了include_package_data=True,需要检查MANIFEST.in是否存在规则误排除了spark_jobs下的文件,或是项目的.gitignore规则被setuptools读取,导致文件没有被打包进去。
正确处理方案
  1. 首先修正setup.py里的packages参数配置,不需要额外套方括号:
# 错误写法
packages=[find_packages()]
# 正确写法
packages=find_packages()
  1. 排查打包为空问题:
    • 确保项目结构如下:
你的项目根目录/
├── setup.py
└── spark_jobs/
    ├── __init__.py
    └── 你的其他代码文件.py
  • 不需要额外配置MANIFEST.in的话,可以临时把include_package_data=True改成include_package_data=False测试打包是否正常,确认是资源文件规则问题后再调整对应配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:39:03