安装排障手册#

学习目标

  • 用报错里的关键句在本页找到对应条目,按"现象 / 原因 / 解法"处理

  • 知道 Kit 日志和 Isaac Lab 日志在哪、先看哪一个

  • 向官方提 issue 时一次附齐需要的信息

前置知识

怎么用这一页#

这一节回答:报错了,怎么在这一页里找?

复制报错里最有辨识度的一句(通常是 ERROR、Error 后面那句,或 Traceback 最后一行),用浏览器的页内查找(Ctrl+F)或站内搜索。每条的三级标题就是报错原文;没有固定报错文字的问题,标题写现象。

每条固定三行:现象(你看到了什么)、原因、解法,最后是来源。标"本站实测"的条目,都在本站的 Isaac Sim 5.1.0 + Isaac Lab 2.3.2 环境(Ubuntu 22.04、RTX 5070、驱动 580.178.04)中复现过[1]。

本页是参考页,会持续追加条目。

通用排障顺序#

这一节回答:遇到没见过的报错,按什么顺序查?

  1. 往上翻,找第一个真正的错误。 Isaac Sim 崩溃时,终端末尾常常是一大串 Exception ignored in ... __del__ 和 Segmentation fault,它们是退出时的连带报错,真正的原因在更上面[2]。见下文崩溃时满屏 __del__ 报错。

  2. 看日志文件。 终端默认只打印 WARN 及以上级别,完整信息在日志文件里[3]。日志路径在终端开头几行就会打印出来,搜 Logging to file 即可。

  3. 提高日志级别再跑一次。 在命令后加 --info 或 --verbose[3]。

  4. 缩到最小复现。 先跑官方的 scripts/tutorials/00_sim/create_empty.py --headless[4],或本站的 verify_install.py。它们能跑通,说明安装没问题,问题在你的脚本或资产;它们也跑不通,就回到安装阶段的条目逐个排除。

  5. 检查环境变量。 打印 PYTHONPATH、CONDA_PREFIX、VIRTUAL_ENV,确认用的是你以为的那个 Python 环境(which python)。

日志

pip 安装时的位置

内容

Kit 日志

<环境>/lib/python3.11/site-packages/isaacsim/kit/logs/Kit/Isaac-Sim/5.1/kit_<时间>.log

Isaac Sim 各扩展的完整日志,含 GPU、驱动版本表

Isaac Lab 日志

/tmp/isaaclab/logs/isaaclab_<时间>.log

Isaac Lab 自身的日志

训练输出

logs/<库名>/<任务名>/<时间>/

训练脚本的 checkpoint 与 TensorBoard 数据

表 1:日志位置。前两行为本站实测:启动时终端分别打印 [Info] [carb] Logging to file: 和 [INFO][IsaacLab]: Logging to file:,以终端打印的为准。二进制(workstation)安装的 Kit 日志在 ~/.nvidia-omniverse/logs/Kit/Isaac-Sim[5]。

安装阶段#

这一节回答:pip install 和 ./isaaclab.sh --install 时的报错。

ERROR: No matching distribution found for isaacsim==5.1.0#

  • 现象:pip install "isaacsim[all,extscache]==5.1.0" 失败,上一行列出的可用版本最高只到 4.5.0.0。

  • 原因:当前环境的 Python 不是 3.11。Isaac Sim 5.1 的 pip 包只提供 Python 3.11 的版本[6];用 3.10 时 pip 只能看到 4.x 的版本(4.5 要求 3.10)。

  • 解法:python --version 确认版本,按 1.4 第一步 用 python=3.11 重建环境。Ubuntu 22.04 自带 3.10,24.04 自带 3.12[7],都不能直接用。

来源:本站实测(系统 Python 3.10.12 下执行 pip download "isaacsim==5.1.0",输出如标题,可用版本列表为 4.0.0.0 至 4.5.0.0);PyPI[6]。

GLIBC 版本低于 2.35(Ubuntu 20.04 等)#

  • 现象:在较老的 Linux 发行版上 pip 找不到 isaacsim 5.1.0,报错与上一条相同;或其他依赖报 GLIBC_2.xx not found。

  • 原因:pip 安装的 Isaac Sim 要求 GLIBC 2.35 及以上,Ubuntu 20.04 默认是 2.31[8]。本站查看 isaacsim 5.1.0.0 的 wheel 标签为 manylinux_2_35_x86_64,即 pip 在 GLIBC 低于 2.35 的系统上不会选中它(推断:依据 wheel 标签规则,未在 20.04 上实测)。

  • 解法:ldd --version 查看版本。低于 2.35 时改用二进制安装或容器[8],见 1.6 容器化 与 1.7 安装方式对比。

来源:Isaac Lab pip 安装页[8];wheel 标签为本站实测(isaacsim-5.1.0.0.dist-info/WHEEL)。

[ERROR] Unable to find any Python executable at path: '.../_isaac_sim/python.sh'#

  • 现象:运行 ./isaaclab.sh --install 或 ./isaaclab.sh -p ... 时立即退出,下面列出三条可能原因。

  • 原因:isaaclab.sh 依次在 CONDA_PREFIX、VIRTUAL_ENV、仓库下的 _isaac_sim/python.sh 中找 Python[9]。pip 安装时出现这个错,几乎都是因为当前终端没有激活环境。

  • 解法:先 conda activate env_isaaclab 或 source env_isaaclab/bin/activate,再运行 isaaclab.sh。新开的终端要重新激活。

来源:本站实测(未激活环境时运行 ./isaaclab.sh -p -c "print(1)",输出如标题);isaaclab.sh 源码[9]。

[ERROR] Unable to find the Isaac Sim directory#

  • 现象:isaaclab.sh 报这一句,并提示 Isaac Sim pip package 'isaacsim-rl' is not installed 等三条可能原因。

  • 原因:isaaclab.sh 先找仓库下的 _isaac_sim 软链接,找不到时再检查当前环境是否装了 pip 包 isaacsim-rl(isaacsim[all] 会带上它)[10]。两者都没有就报错。

  • 解法:pip 安装的,确认已激活环境并且 pip list | grep isaacsim-rl 有输出;二进制安装的,按官方步骤在 Isaac Lab 仓库下建 _isaac_sim 软链接指向 Isaac Sim 安装目录[11]。

来源:isaaclab.sh 源码[10]。

ModuleNotFoundError: No module named 'omni'#

  • 现象:执行 from omni.isaac.kit import SimulationApp(或其他 omni.* 导入)时报错。网上的旧教程常这样写。

  • 原因:pip 安装时,omni.* 这些模块的路径由 import isaacsim 注册进来;不先导入 isaacsim,Python 找不到它们。另外 omni.isaac.* 在 5.x 已弃用,只保留兼容,计划在 6.0 移除(D-009)[12]。

  • 解法:新代码直接写 from isaacsim import SimulationApp。运行旧代码时,在第一行加 import isaacsim,之后 omni.isaac.kit 可以导入,但会打印弃用警告。用 Isaac Lab 时,通过 AppLauncher 启动即可,不用自己处理。

来源:本站实测(不先 import isaacsim 时报 No module named 'omni';先导入后能导入,并打印 omni.isaac.kit has been deprecated in favor of isaacsim.simulation_app)。

ModuleNotFoundError: No module named 'isaaclab'#

  • 现象:pip list 里明明有 isaaclab,导入时却报这一句;如果当前目录下正好有名为 isaaclab 的文件夹(如仓库的 source/,或 /tmp:Isaac Lab 把日志写在 /tmp/isaaclab/),则 import isaaclab 不报错,但 isaaclab.__file__ 为 None,下一步报 No module named 'isaaclab.app'。

  • 原因:./isaaclab.sh --install 用 editable 方式安装,环境里记录的是源码的绝对路径。移动或删除 Isaac Lab 仓库后,这个路径失效,只剩安装记录(dist-info)还在[1]。当前目录下有同名文件夹时,它被当作空的命名空间包(namespace package)导入,于是出现 __file__ 为 None。

  • 解法:在仓库的新位置、激活环境后重新运行 ./isaaclab.sh --install。检查方法:python -c "import isaaclab; print(isaaclab.__file__)" 应打印仓库内的真实路径。

来源:本站实测(校验环境中仓库移动过;在 IsaacLab/source/ 与 /tmp 下得到命名空间包,在其他目录下报 No module named 'isaaclab')[1]。

装了 ROS 2 的机器上,导入时版本冲突或报奇怪的错误#

  • 现象:python -c "import sys; print(sys.path)" 里出现 /opt/ros/humble/...;导入 numpy 等包时版本不对,或出现与 ROS 包相关的报错。

  • 原因:~/.bashrc 里 source /opt/ros/humble/setup.bash 设置了 PYTHONPATH,这些路径排在环境自己的包之前,ROS 2 自带的 Python 包混了进来[1]。

  • 解法:在跑 Isaac Lab 的终端里 unset PYTHONPATH,或用 env -u PYTHONPATH python ... 启动。要同时用 ROS 2 时,见 3.10 ROS 2 Bridge。

来源:本站实测[1]。

首次启动#

这一节回答:装完第一次运行时遇到的问题。

Do you accept the EULA? (Yes/No): 卡住,或 EOFError: EOF when reading a line#

  • 现象:第一次 import isaacsim 时停在 EULA 提示;在后台、CI、容器或 nohup 里运行时没人回答,看起来像卡死;标准输入被关闭时直接报 EOFError。

  • 原因:Isaac Sim 首次导入时要求确认 EULA[13]。确认结果写进安装目录下的 isaacsim/kit/EULA_ACCEPTED 文件,所以每个新环境都会再问一次(本站查看已安装包的 isaacsim/kit/kit_app.py 得知)。

  • 解法:设置环境变量 OMNI_KIT_ACCEPT_EULA=YES(Y、1 也可以)[13],例如 export OMNI_KIT_ACCEPT_EULA=YES,或交互运行一次回答 Yes。

来源:Isaac Sim pip 安装页[13];EOFError 为本站实测(关闭标准输入后调用 EULA 检查)。

第一次启动很久没有输出,像是卡死#

  • 现象:第一次运行任何脚本,终端长时间停在扩展加载阶段;同时启动第二个 Isaac Sim 进程时,第二个也会很慢。

  • 原因:首次运行要拉取依赖扩展并编译着色器,官方说明可能超过 10 分钟,并且每个 experience 文件(.kit)第一次运行都要经历一次[14][15]。已有一个实例在运行时,另一个进程的着色器编译更慢[15]。

  • 解法:耐心等待,只要 CPU 仍在忙就不要中断。可以另开终端 tail -f Kit 日志看进度。之后的启动会用缓存(pip 安装时着色器缓存在 isaacsim/kit/cache/ 下,本站实测)。

来源:Isaac Lab 官方安装与排障页[14][15]。

首次启动时下载扩展失败(离线环境、没装 extscache)#

  • 现象:在无法访问外网的机器上首次启动失败,日志里有扩展无法解析或下载的错误。

  • 原因:Isaac Sim 依赖的 Omniverse 扩展要么随 [extscache] 预先装好,要么在首次启动时从扩展注册中心下载[13][14]。安装时漏了 extscache,又没有网络,就拿不到扩展(推断:依据上述两处说明,本站未在离线环境实测,报错原文暂缺)。

  • 解法:安装时写全 isaacsim[all,extscache]==5.1.0,见 1.4 第二步。已经装好的环境可以补装 pip install "isaacsim[extscache]==5.1.0" --extra-index-url https://pypi.nvidia.com。

来源:Isaac Sim pip 安装页[13];Isaac Lab 安装文档[14]。

DISPLAY environment variable is not set, running in headless mode / GLFW initialization failed#

  • 现象:通过 SSH 或在没有桌面的服务器上以 GUI 模式启动,终端出现这两句警告,但程序继续运行,没有窗口。

  • 原因:没有 DISPLAY 时,SimulationApp 自动加上 --no-window 改为 headless 运行;窗口库 GLFW 初始化失败的警告随之出现,属于预期行为,不影响仿真[16]。

  • 解法:服务器上直接加 --headless 运行,警告就不再出现。需要看画面时,在有桌面的机器上运行,或用直播流(livestream)远程查看,见 7.1 headless 与远程运行。

来源:本站实测(去掉 DISPLAY 后以 headless=False 启动,程序正常运行);SimulationApp 源码[16]。

驱动过旧:启动失败、黑屏或崩溃#

  • 现象:启动阶段崩溃、黑屏,或渲染相关扩展报错。没有统一的报错原文。

  • 原因:NVIDIA 驱动低于推荐版本。Isaac Lab 2.3.2 推荐 Linux 驱动 580.65.06 或更新[17]。

  • 解法:先查驱动版本:nvidia-smi,或在 Kit 日志里搜 Driver Version,日志中有一张 GPU 与驱动版本表(本站实测)。低于推荐值时,官方建议从 Unix Driver Archive 安装最新的**生产分支(production branch)**驱动[17][18]。版本对照见 1.1 版本兼容矩阵。

来源:Isaac Lab 安装页[17];Isaac Sim 排障页[18]。

运行阶段#

这一节回答:安装没问题,但跑起来出错或退不出去。

torch.OutOfMemoryError: CUDA out of memory#

  • 现象:训练或创建环境时显存耗尽退出。

  • 原因:显存占用大致随并行环境数 num_envs 增加。官方任务的默认 num_envs 通常是几千(如 reach 任务为 4096[19]),小显存的显卡放不下;带相机传感器的任务占用更高。

  • 解法:训练脚本加 --num_envs 减小环境数[20],例如 --num_envs 512,从小往大试。各任务在不同 num_envs 下的实测显存见 1.3 硬件需求。

来源:Isaac Lab 源码[19][20];实测数据见 1.3。

PhysX error: the application need to increase the PxgDynamicsMemoryConfig::foundLostPairsCapacity#

  • 现象:GPU 仿真运行一段时间后报这一句(有时是其他 ...Capacity 参数),之后出现穿模或接触丢失。

  • 原因:GPU 物理的缓冲区只在仿真开始时按配置分配一次,不会自动增长;碰撞对数量(常随 num_envs 增加)超过缓冲区大小就会报错[21]。

  • 解法:把报错里建议的数值写进 PhysxCfg 对应的 gpu_*_capacity 参数,例如 sim_cfg.physx.gpu_found_lost_pairs_capacity = 4096[21]。

来源:Isaac Lab 排障页[21]。

Exception ignored in: ... __del__ / TypeError: 'NoneType' object is not callable#

  • 现象:脚本出错后,终端末尾是一大串 Exception ignored in 与 NoneType 报错,最后是 Segmentation fault (core dumped)。

  • 原因:这些是 Python 解释器退出时销毁 Isaac Sim 对象引起的连带报错,不是真正的原因[2]。

  • 解法:往上翻,找到第一段完整的 Traceback,那里才是出错的地方[2]。

来源:Isaac Lab 排障页[2]。

自己写的脚本退出时卡住,simulation_app.close() 不返回#

  • 现象:脚本逻辑已经跑完,进程却一直不退出,CPU 占满。

  • 原因:脚本自己创建了 SimulationContext,在它还存在时调用 simulation_app.close() 会卡住。Isaac Lab 的环境类在 close() 中会先清理仿真上下文[22]。

  • 解法:在 simulation_app.close() 之前调用 sim.clear_all_callbacks() 和 sim.clear_instance();用 gym.make 创建的环境,先调用 env.close()。完整写法见本站示例 verify_install.py。

来源:本站实测(编写 1.4 验证脚本时复现并修复);Isaac Lab 源码[22]。

timeout 或 kill 结束不了 Isaac Sim 进程#

  • 现象:用 timeout 600 python ... 限时运行,到时间后进程仍在;kill <pid> 无效。

  • 原因:Kit 进程收到 SIGTERM 后不退出(本站实测:create_empty.py 打印 Setup complete 后发 SIGTERM,60 秒后进程仍在,发 SIGKILL 才结束)。具体机制未查到官方说明(推断:Kit 自己处理了该信号)。

  • 解法:无人值守运行时用 timeout -s KILL <秒数> python ...,手动结束用 kill -9 <pid>。同时设 PYTHONUNBUFFERED=1,避免被强杀时丢失尚未刷新的输出。

来源:本站实测。

如何提问#

这一节回答:本页没找到,要向官方求助时附哪些信息?

先搜一遍 Isaac Lab 的 GitHub Issues 和 Discussions,很多问题已有人问过。提新 issue 时附上:

项

怎么获取

Isaac Sim 版本

pip show isaacsim

Isaac Lab 版本与 commit

仓库下 cat VERSION 与 git describe --tags

安装方式

pip / 二进制 / 容器;conda / uv / venv

操作系统与 GLIBC

lsb_release -a、ldd --version

GPU 与驱动

nvidia-smi

Python 与 PyTorch

python --version、python -c "import torch; print(torch.__version__, torch.version.cuda)"

最小复现命令

能在干净环境重现的一条命令,最好基于官方示例脚本

完整报错

终端输出从第一个 Traceback 开始,不要只贴最后一行

Kit 日志

见表 1,官方要求报告问题时附上[3]

表 2:提 issue 时的信息清单。

常见坑#

本页每一条都是坑,这里不再重复。安装流程中的注意事项见 1.4 的"常见坑"。

延伸阅读#

版本说明#

本页条目针对 Isaac Sim 5.1.0 + Isaac Lab 2.3.2 的 pip 安装。Isaac Sim 6.1 + Isaac Lab 3.0 要求 Python 3.12,本页中与 Python 版本、omni.isaac.* 导入相关的条目在 3.0 上情况不同,见 1.5 安装 Isaac Sim 6.1 + Isaac Lab 3.0-EA 与 8.1 3.0 改了什么、为什么改。