GitLab CI环境下无法安装fbprophet的问题求助
这种本地正常跑、CI却报错的情况真的挺闹心的,我之前也碰到过类似的依赖坑,给你几个排查方向试试:
检查Tox的隔离环境配置
Tox默认会创建完全独立的虚拟环境,你本地提前装的numpy根本不会影响到CI里的tox环境。建议看看你的tox.ini文件:- 确认
deps部分有没有把numpy明确列进去,比如写成deps = numpy或者指向包含numpy的requirements.txt; - 有时候fbprophet的setup.py依赖声明顺序有问题,会先尝试安装自身再装numpy,把numpy放在依赖列表最前面能避免这个问题。
- 确认
排查CI镜像的系统级依赖缺失
fbprophet安装需要编译一些底层代码,依赖gcc、g++、make这类编译工具,还有libpq-dev、python3-dev这类系统库。本地可能早就装了这些,但GitLab CI的基础镜像(比如默认的Ubuntu镜像)大概率没有。可以在CI脚本里先加一段系统依赖安装命令:apt-get update && apt-get install -y gcc g++ make libpq-dev python3-dev清理CI的Tox缓存
GitLab CI有时候会缓存tox的环境目录,但缓存文件可能损坏导致依赖加载异常。试试在运行tox前先清理缓存:rm -rf .tox/或者临时在GitLab项目设置里禁用缓存测试一下。
核对本地与CI的Python版本
看看你本地用的Python版本和CI里tox指定的版本是不是一致?比如本地是3.8,CI里tox的envlist配置的是3.10,不同Python版本的依赖处理逻辑可能有差异,版本不匹配也可能触发这类奇怪的报错。调整numpy的安装时机
你之前在tox命令前装numpy是没用的——因为tox会创建独立虚拟环境,全局安装的numpy不会被它识别。要在tox环境里装numpy,要么在tox.ini的deps里配置,要么用tox -e py3X -- pip install numpy的方式强制在对应环境里提前安装。
备注:内容来源于stack exchange,提问作者Roopanjali Jasrotia

