GitLab CI Runner运行RobotFramework报cannot import 'run_cli'错误
问题原因
- 最常见诱因:安装了错误的
robot包,而非Robot Framework官方包。PyPI平台存在两个极易混淆的同名相关包:一个是和自动化测试完全无关的第三方工具包robot,另一个才是Robot Framework测试框架的正式安装包robotframework。你本地环境安装的是正确的robotframework,但Docker镜像构建过程中要么依赖声明写错、要么优先级被错误的robot包覆盖。 - 版本不匹配:
run_cli是Robot Framework 3.2及以上版本才提供的接口,如果Docker镜像内安装的Robot Framework版本低于3.2,也会触发导入失败。 - 路径冲突:镜像内可能存在多个Python环境,或者项目根目录下有同名的
robot.py文件、robot命名目录,导入时会优先读取本地文件,覆盖site-packages中的官方包。
解决方案
- 先验证当前环境的包安装状态,在
run-test.sh最开头增加以下命令打印包信息:
pip show robot pip show robotframework
如果pip show robot有输出结果,说明确实安装了冲突的无关包,先执行卸载:
pip uninstall -y robot
- 修正
requirements.txt的依赖声明,确保写的是正确的Robot Framework包,建议指定兼容版本,例如:robotframework>=6.0
禁止直接写robot作为依赖项。 - 检查项目根目录下是否存在名为
robot.py的文件或者robot命名的目录,如果有需要重命名,避免导入优先级冲突。 - 优化Dockerfile安装逻辑,提前清理冲突包再安装依赖:
FROM python:3.9 ARG CI_COMMIT_REF_NAME=master WORKDIR /app COPY . . # 先卸载冲突包再安装正式依赖 RUN pip uninstall -y robot && \ pip install [Repository] && \ pip install -r requirements.txt
- 也可以直接使用Robot Framework官方可执行命令启动任务,替换原有的
python -m robot命令,降低导入冲突概率:robot --include staging_lp_items
内容的提问来源于stack exchange,提问作者Mohammad Monfared
相关产品推荐
相关产品推荐

