pip批量安装requirements.txt时pandas失败,单独安装正常的问题求助
解决pip安装requirements.txt时pandas版本回溯导致的编译错误
问题根源
pandas 0.24.2是2019年发布的版本,完全不兼容Python 3.10。执行pip install -r requirements.txt时,pip会因requirements.txt中其他依赖的版本约束(未明确指定版本或存在依赖冲突)自动回溯到该旧版本,而旧版本的C扩展代码在Python 3.10环境下编译时,会出现Py_REFCNT、tp_print这类语法/API错误——这些都是Python版本迭代后废弃或修改的C API。
单独执行pip install pandas时,pip会直接匹配当前Python 3.10的最新兼容pandas版本(如1.3.0及以上,该系列开始支持Python 3.10),因此不会触发错误。
解决方案(仅修改requirements.txt)
因为只能通过调整requirements.txt解决,推荐以下两种方案:
- 明确指定pandas的兼容版本
在requirements.txt中添加pandas的版本约束,强制pip安装支持Python 3.10的版本:
absl-py numpy matplotlib pandas>=1.3.0
这个版本号是最低兼容线,你也可以指定更具体的版本(如pandas==1.5.3),避免后续版本更新带来的潜在问题。
- 排查并修复冲突依赖的版本约束
如果是requirements.txt中其他依赖间接要求旧版pandas,需要给该依赖也指定支持新版pandas的版本。例如,若some-dependency依赖旧版pandas,可查找它支持pandas>=1.3.0的版本号,然后在requirements.txt中写:
absl-py numpy matplotlib some-dependency>=2.0.0 # 假设2.0.0版本开始支持新版pandas pandas>=1.3.0
验证方法
修改requirements.txt后,在本地Ubuntu虚拟环境中重新执行pip install -r requirements.txt确认安装成功,再推送到GitHub Actions验证CI流程正常运行。
内容的提问来源于stack exchange,提问作者Malcolm Slaney
相关产品推荐
相关产品推荐

