Jetson Nano终端Python3可用CUDA,脚本文件中不可用的解决求助
解决Jetson Nano脚本执行时CUDA不可用的问题
1. 对齐交互终端与脚本的环境变量
交互终端能正常识别CUDA,说明环境变量配置正确,但脚本执行时可能未继承这些变量:
- 导出交互终端的环境变量:
python3 -c "import os; print('\n'.join(f'{k}={v}' for k,v in os.environ.items()))" > env_interactive.txt - 在脚本开头临时添加导出代码,执行脚本得到脚本环境的变量:
# 临时插入file.py最顶部 import os with open('env_script.txt', 'w') as f: f.write('\n'.join(f'{k}={v}' for k,v in os.environ.items())) - 对比两个文件,重点补全
CUDA_HOME、PATH、LD_LIBRARY_PATH等CUDA相关变量,仅补充缺失部分,不要覆盖原有值:# 示例:补全LD_LIBRARY_PATH的CUDA路径 import os cuda_lib_path = "/usr/local/cuda/lib64" if cuda_lib_path not in os.environ.get('LD_LIBRARY_PATH', ''): os.environ['LD_LIBRARY_PATH'] = f"{cuda_lib_path}:{os.environ.get('LD_LIBRARY_PATH', '')}"
2. 确保脚本使用与交互终端相同的Python解释器
Jetson Nano的Torch绑定系统默认Python,若脚本用了其他解释器(如虚拟环境)会导致CUDA失效:
- 交互终端执行以下命令获取正确解释器路径:
which python3 python3 -c "import sys; print(sys.executable)" - 用绝对路径调用脚本,比如:
/usr/bin/python3 file.py
3. 检查CUDA设备权限
脚本执行时可能没有访问GPU设备的权限:
- 先尝试用sudo执行脚本验证:
sudo python3 file.py - 若sudo后正常,给当前用户添加GPU设备权限:
sudo usermod -aG video $USER # 重启系统后生效
4. 避免错误设置CUDA_VISIBLE_DEVICES
不要直接覆盖CUDA_VISIBLE_DEVICES,这会破坏Jetson默认的设备映射,导致其他功能失效。如需指定设备,应基于原有变量追加:
import os current_devices = os.environ.get('CUDA_VISIBLE_DEVICES', '') os.environ['CUDA_VISIBLE_DEVICES'] = f"0,{current_devices}" if current_devices else "0"
内容的提问来源于stack exchange,提问作者R. Boudewijn
相关产品推荐
相关产品推荐

