LD_LIBRARY_PATH路径重复拼接 libcudart.so.11.0加载失败问题修复
问题根因
你遇到的是两个独立的问题,互不影响:
- LD_LIBRARY_PATH路径重复:
.bashrc会在终端启动、图形会话加载、手动source等多个场景被重复执行,你原来的配置每次执行都会无条件在已有路径后面追加mujoco和nvidia的路径,加载几次就会重复几次,属于配置写法不严谨导致的冗余问题,不影响程序运行。 - libcudart.so.11.0加载报错:这个是警告级别的日志,不是致命错误。envpool官方发布的预编译包默认基于CUDA 11.0构建,启动时会优先尝试加载CUDA运行时库走GPU加速,加载失败就会自动回退到CPU后端,所以你的代码可以正常运行输出结果,只是打印了加载失败的提示。另外你贴的
.bashrc配置里mujoco路径写错了,多打了一个点:写的是/home/user/.mujoco.mujoco210/bin,正确路径应为/home/user/.mujoco/mujoco210/bin,之前的mujoco路径配置实际是无效的。
修复方案
1. 解决libcudart.so.11.0加载警告
根据自己的使用场景二选一即可:
- 如果你需要用GPU跑环境:
先确认本地安装的CUDA版本:- 如果是CUDA 11.x系列:先找到
libcudart.so的实际存放路径(一般在/usr/local/cuda-xx.x/lib64目录下),把该路径加到LD_LIBRARY_PATH中即可。如果安装的是11.x的非11.0小版本(比如11.3、11.7),11.x系列的cudart是二进制兼容的,直接执行下面的命令创建软链接就能解决:sudo ln -s /usr/local/cuda/lib64/libcudart.so.11.* /usr/lib/libcudart.so.11.0 - 如果是CUDA 12及以上版本:要么安装CUDA 11.x对应版本,要么拉取envpool源码本地编译适配当前CUDA版本。
- 如果是CUDA 11.x系列:先找到
- 如果你只用CPU跑环境:
这个警告本身不影响功能,嫌日志冗余的话,在导入envpool之前加一行环境变量指定走CPU后端即可,不会再触发CUDA库加载逻辑:import os os.environ["ENVPOOL_BACKEND"] = "cpu" import envpool
2. 解决LD_LIBRARY_PATH重复拼接问题
把.bashrc里原来的LD_LIBRARY_PATH配置替换成带重复判断的写法,避免重复追加:
export PATH # 待添加的自定义库路径 _add_ld_paths=( "/home/user/.mujoco/mujoco210/bin" "/usr/lib/nvidia" ) for target_path in "${_add_ld_paths[@]}"; do # 仅当路径存在、且未被加入LD_LIBRARY_PATH时才追加 if [ -d "$target_path" ] && [[ ":$LD_LIBRARY_PATH:" != *":$target_path:"* ]]; then export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${target_path}" fi done unset _add_ld_paths target_path
修改完成后执行source ~/.bashrc,多次执行后再用echo $LD_LIBRARY_PATH验证,不会再出现路径重复的问题。
注:你贴的示例代码里有个笔误
act - np.zeros((100, 6)),正确写法应为act = np.zeros((100, 6)),如果后续跑代码报语法错误可以先检查这里。
内容的提问来源于stack exchange,提问作者Schach21
相关产品推荐
相关产品推荐

