运行GUARD项目代码时,想测试训练好的智能体并保存视频。
输入命令:
python cpo_video.py --model_path logs/Goal_Point_8Hazards_cpo_kl0.02_target_cost0.0_epochs10/Goal_Point_8Hazards_cpo_kl0.02_target_cost0.0_epochs10_s1/pyt_save/model.pt --task Goal_Point_8Hazards --video_name video_cpo --max_epoch 10
出现报错:
libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
swrast_dri.so 是 Mesa 3D 图形库中的一个软件渲染器驱动,它在硬件加速不可用时被使用。这个错误表明系统没有在 /usr/lib/dri/
下找到 swrast_dri.so
,该驱动实际路径为/usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
。
尝试(记录一些踩坑)
1、安装或重新安装 Mesa 库(没用)
sudo apt-get update
sudo apt-get install libgl1-mesa-dri
即使重新安装也不会安装在你想要的目录下,反而会重复安装,出现很多奇怪的路径。
2、配置环境变量(没用)
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/dri:${LD_LIBRARY_PATH}
sudo ldconfig #刷新链接器的配置
目的是确保系统在正确的目录中搜索动态链接库文件,但是不起作用。
3、下载open3d库(没用)
open3d库文件中的确包含 swrast_dri.so
,但是解决不了根源问题(路径错误)。
4、创建符号链接(有效)参考
sudo ln -s /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so /usr/lib/dri/
类似Windows中的快捷方式,目的是将名为 swrast_dri.so
的文件在 /usr/lib/dri/
目录下创建一个符号链接,链接指向其原始位置 /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
。
然后解决以上报错,但会出现一个新的报错:
libGL error: MESA-LOADER: failed to open swrast: /home/wyc/anaconda3/envs/randlanet/bin/…/lib/libstdc++.so.6: version `GLIBCXX_3.4.30’ not found (req uired by /lib/x86_64-linux-gnu/libLLVM-13.so.1) (search paths /usr/lib/x86_64-linux-gnu/dri:$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast
GLFW Error: GLX: Failed to create context: GLXBadFBConfig
Failed to create window
[DrawGeometries] Failed creating OpenGL window.
在自己的虚拟环境中输入:
conda install -c conda-forge gcc
OK!