系统

matplotlib/matplotlib-cpp避坑

docker内未安装虚拟显示器或未共享宿主机显示器服务,python使用matplotlib会报错:

exception _tkinter.tclerror: ‘no display name and no $display environment variable’ in

C++使用matplotlib-cpp是会导致程序崩溃,尤其是matplotlib的save()或savefig(),使用gdb查看core文件一堆libc库问题:

0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50

1 0x00007fe46be30859 in __GI_abort () at abort.c:79

2 0x00007fe46c2088d1 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6

3 0x00007fe46c21437c in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6

4 0x00007fe46c2143e7 in std::terminate() () from /lib/x86_64-linux-gnu/libstdc++.so.6

5 0x00007fe46c214699 in __cxa_throw () from /lib/x86_64-linux-gnu/libstdc++.so.6

6 0x000055847916b667 in matplotlibcpp::save (filename=”output/trajectory.png”, dpi=0) at /home/zhito/SensorX2car/pose_sensor2car/3rdparty/matplotlib-cpp/matplotlibcpp.h:2642

7 0x000055847916643f in YawCalib::LoadData (this=0x7fffeed0c970, file_path=”data/novatel_enu.csv”, start_frame=0, end_frame=2147483647) at /home/zhito/SensorX2car/pose_sensor2car/src/yawCalib.cpp:58

8 0x000055847916569c in main (argc=3, argv=0x7fffeed0cb38) at /home/zhito/SensorX2car/pose_sensor2car/src/run_imu2car.cpp:45

ubuntu系统一般自带X11服务器,安装X11服务器:sudo apt-get install x11-xserver-utils

打开X11服务器权限:xhost +

设置宿主机环境变量export DISPLAY=:0

进入容器时添加环境变量共享与网络共享:docker run -it -e DISPLAY=$DISPLAY –net=host dockername

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

python对象下划线修饰

2025 年 6 月 2 日