Linux环境下导入torch时报'Invalid syntax'错误的排查求助
PyTorch导入错误排查(Miniconda环境)
我在Miniconda环境中安装PyTorch后,执行import torch命令出现报错,第一次错误信息如下:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/vol/tcm17/username/miniconda3/lib/python3.8/site-packages/torch/__init__.py", line 779, in <module> from .serialization import save, load File "/vol/tcm17/username/miniconda3/lib/python3.8/site-packages/torch/serialization.py", line 18, in <module> from typing_extensions import TypeAlias File "/home/username/.local/lib/python3.8/site-packages/typing_extensions.py", line 880 if stripped_args
再次执行import torch时,错误信息发生变化:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/vol/tcm17/username/miniconda3/lib/python3.8/site-packages/torch/__init__.py", line 249, in <module> for name in dir(_C): NameError: name '_C' is not defined
环境信息
- 未使用笔记本环境
- Python版本:3.8.16
- PyTorch版本:1.13.1
- Miniconda因服务器磁盘限制安装在本地文件夹
- 服务器系统:Ubuntu
- 已尝试安装Cython,无效果
可能的问题及解决步骤
1. typing_extensions包损坏或版本不兼容
第一次错误显示typing_extensions.py文件存在语法不完整问题(第880行的if stripped_args未闭合),说明该包要么文件损坏,要么版本与PyTorch 1.13.1不兼容。
- 解决方法:先卸载本地用户目录下的
typing_extensions,再在conda环境内重新安装适配版本:pip uninstall -y typing_extensions conda install typing_extensions=4.4.0
2. Python路径优先级冲突
错误日志同时出现用户本地包路径/home/username/.local/lib/python3.8/site-packages/和conda环境包路径,说明系统优先加载了本地用户包,导致与conda环境依赖冲突。
- 临时解决:在Python交互窗口先执行以下命令,再导入torch:
import sys sys.path.remove('/home/username/.local/lib/python3.8/site-packages') import torch - 永久解决:激活conda环境前设置环境变量,禁止加载用户本地包:
export PYTHONNOUSERSITE=1 conda activate 你的环境名
3. PyTorch安装不完整或损坏
第二次错误的NameError: name '_C' is not defined通常是PyTorch核心C扩展未正确安装或加载,大概率是安装时磁盘空间不足、网络中断导致文件缺失。
- 解决方法:完全卸载后清理缓存,重新安装:
# 卸载PyTorch(CPU版本示例,GPU版本需替换对应cuda包) conda uninstall -y pytorch torchvision torchaudio cpuonly # 清理conda缓存 conda clean -a # 重新安装指定版本的PyTorch conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 cpuonly -c pytorch
4. Miniconda环境权限问题
Miniconda装在本地文件夹,可能存在权限不足,导致部分PyTorch文件未正确写入。
- 解决方法:检查conda环境目录权限,确保当前用户有读写权限:
如果权限不够,执行:ls -ld /vol/tcm17/username/miniconda3/envs/你的环境名chmod -R u+rwx /vol/tcm17/username/miniconda3/envs/你的环境名
内容的提问来源于stack exchange,提问作者kravchea
相关产品推荐
相关产品推荐

