采用conda环境和ros环境关于rqt_gui冲突出现“段错误(核心已转储)”的问题

本文详细记录了解决在Ubuntu系统中ROS与conda环境冲突的过程,特别是在使用rqt_gui插件时遇到的问题。通过调整环境变量、安装特定库以及正确配置Anaconda Navigator,最终实现了ROS与conda的和谐共存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用conda和ros共存的ubuntu系统时,我采用的是base环境是conda python3,单独建立了一个rospy2的环境

在rospy2中使用rqt_gui时会出现:

 

段错误(核心已转储)

 

因此决定在base环境中使用rqt的各种插件

但是会遇到如下问题:

rosrun rqt_gui eqt_gui

出现:

Could not import "pyqt" bindings of qt_gui_cpp library - so C++ plugins will not be available: Traceback (most recent call last): File "/opt/ros/kinetic/lib/python3.7/dist-packages/qt_gui_cpp/cpp_binding_helper.py", line 43, in <module> from . import libqt_gui_cpp_sip ImportError: dynamic module does not define module export function (PyInit_libqt_gui_cpp_sip)

这个错误。因此搜刮了网上各种教程:

其中写的最好的是:

ROS - 汇总ROS与Anaconda冲突的解决办法

https://blog.youkuaiyun.com/bornfree5511/article/details/106166465?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

在最初配置的时候非常推荐。

但是其中的第一个方法初始化时选no已经错过了,于是只能用其余方式补救:

法三:每次显式的启用anaconda

我们把export PATH="/home/$USER/anaconda3/bin:$PATH"

这句注释掉。每次使用anaconda的时候,手动在terminal中再输入这句话。

但是依然会出现这个问题。

于是我找到了一种比较硬核的解决方式:

https://answers.ros.org/question/247389/rqt_graph-error-could-not-import-pyqt-bindings-of-qt_gui_cpp-library-so-c-plugins-will-not-be-available/

问题解决的方法:use " conda install pydot"

但是这个是装在base中的,于是我在之前注释掉conda配置之后使用了如下两步解决了这个问题:

1.打开anaconda navigator:进入

配置ros的环境

2.搜索 pydot并安装:

之后进入终端使用source ~/.bashrc

出现界面没有(base)了:

键入rosrun rqt_gui rqt_gui

问题解决:

此时没有在rospy2环境中使用rqt,也就不存在段错误的情况了。

其余解决方案:

ROS与Anaconda的冲突解决

https://blog.youkuaiyun.com/qq_34689206/article/details/84960962

ROS使用过程中出现的问题:由于Anaconda的Python路径问题造成rqt_graph报错

https://blog.youkuaiyun.com/sinat_36330809/article/details/83992645

 

conda - conda使用总结

https://blog.youkuaiyun.com/bornfree5511/article/details/106723571

 

### 解决Conda安装过程中的段错误问题 当遇到`conda install`过程中出现的“段错误核心已转)”,这通常是由多种因素引起的,包括但不限于不同Python版本之间的冲突、特定硬件架构的支持不足或是某些库文件与当前系统的不兼容。 对于由ROSConda环境共同作用引发的问题,一种常见的处理方式是在启动涉及图形界面的应用之前设置线程数为1来规避潜在的多线程执行带来的不稳定情况。具体操作可以通过向终端输入如下命令实现: ```bash export OMP_NUM_THREADS=1 ``` 然而,如果希望一劳永逸地解决问题而不是每次都手动设定上述变量,则可以根据实际情况采取更深入的方法。例如,在面对因存在多个NumPy副本而导致的问题时,可以选择移除可能引起冲突的那个版本,并保留唯一指定版本以确保软件包间的良好协作[^3]。 另外,针对特殊硬件平台如NVIDIA Jetson TX2这类基于aarch64架构的设备而言,“非法指令”的现象可能是由于OpenBLAS未能正确识别CPU类型所造成的。此时可以在用户的`.bashrc`配置文件里添加一行用于指明目标处理器类型的导出语句,从而让程序能够正常运行: ```bash echo 'export OPENBLAS_CORETYPE=ARMV8' >> ~/.bashrc && source ~/.bashrc ``` 值得注意的是,创建独立于默认Base环境之外的新虚拟环境也是一种有效的策略,特别是当你打算在同一台机器上同时维护Python 2.x Python 3.x 的开发工作流时。通过这种方式可以有效隔离各个项目所需的依赖关系,减少相互干扰的可能性[^4]。 最后,考虑到部分情况下这些措施仍无法完全消除问题根源所在,建议查阅GitHub上的MaskFusion项目的Issue页面或其他在线资源寻找更多针对性的帮助支持。因为那里往往聚集了许多开发者分享的经验教训技术诀窍,有助于快速定位并修复类似的技术难题[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值