Ubuntu20.04下Qt Creator中C++调用Python导入cv2出现段错误如何解决
问题描述
- 运行环境:Ubuntu 20.04,Python 3.8(conda虚拟环境部署),Qt Creator开发C++项目
- 故障现象:C++调用Python执行
import cv2时触发段错误,sys、numpy等其余模块可正常导入;cv2在conda环境命令行下可正常导入使用,手动指定site-packages路径无法解决问题 - 核心故障代码:
// 初始化Python后直接导入cv2触发段错误 Py_InitializeEx(0); PyRun_SimpleString("import cv2");
解决方案
该故障90%以上是opencv-python的GUI组件和项目使用的Qt库版本冲突,或是Python初始化时没有正确加载conda环境的依赖库路径导致,可按以下步骤逐一排查修复:
- 优先替换无GUI版本的opencv:在激活的conda环境中执行如下命令,避免两个不同版本的Qt库符号冲突
pip uninstall opencv-python -y pip install opencv-python-headless
- 确保启动Qt Creator时继承conda环境变量:不要直接从快捷方式启动Qt Creator,先在终端激活conda环境后再启动,保证进程加载的库路径优先读取conda环境
conda activate 你的conda环境名称 qtcreator
- 修正CMakeLists.txt的Python链接配置,强制链接conda环境内的Python库,避免误用系统自带Python:
# 替换为你自己的conda环境实际路径 set(Python_ROOT_DIR "/home/用户名/anaconda3/envs/你的环境名") find_package(Python3 COMPONENTS Interpreter Development REQUIRED) # 项目关联Python头文件和库文件 include_directories(${Python3_INCLUDE_DIRS}) target_link_libraries(你的项目编译目标名 PRIVATE ${Python3_LIBRARIES})
- 若仍有问题,可在Python初始化后显式指定库加载路径:
Py_InitializeEx(0); PyRun_SimpleString("import sys\n" // 替换为自己的site-packages路径 "sys.path.insert(0, \"/home/用户名/anaconda3/envs/你的环境名/lib/python3.8/site-packages\")");
内容的提问来源于stack exchange,提问作者surajj4837
相关产品推荐
相关产品推荐

