【ImportError】from torch._C import * # noqa: F403; ImportError: xxx: defined symbol: iJIT_NotifyEvent

张开发
2026/4/10 15:14:11 15 分钟阅读

分享文章

【ImportError】from torch._C import * # noqa: F403; ImportError: xxx: defined symbol: iJIT_NotifyEvent
安装好cuda和cudnn后在虚拟环境 下import torch报错(retrieval) ➜ retrieval /home/ubuntu/.conda/envs/retrieval/bin/python /home/ubuntu/*****/retrieval/test.py Traceback (most recent call last): File /home/ubuntu/*****/retrieval/test.py, line 8, in module import torch File /home/ubuntu/.conda/envs/retrieval/lib/python3.10/site-packages/torch/__init__.py, line 367, in module from torch._C import * # noqa: F403 ImportError: /home/ubuntu/.conda/envs/retrieval/lib/python3.10/site-packages/torch/lib/libtorch_cpu.so: undefined symbol: iJIT_NotifyEvent在csdn上搜索得到的结果基本都是pytorch和intel OneApi之间的版本不兼容问题导致的结果。本质上的原因是在安装torch时由于mkl的版本与pytorch的版本没有对应上通过该命令可以查看相关版本。conda list | grep -E mkl|intelblas 1.0 mkl defaults intel-openmp 2025.0.0 h06a4308_1171 defaults mkl 2025.0.0 hacee8c2_941 defaults mkl-service 2.5.2 py310hacdc0fc_0 defaults mkl_fft 2.1.1 py310h8fe796d_0 defaults mkl_random 1.3.0 py310h505adc9_0 defaults那依据其本质我们应该做的是主动的降级有些说是强制性安装低版本conda install mkl2024.1 mkl-service2.5.2 intel-openmp2024.1 --force-reinstall -c conda-forge但是导致的结果是兼容版本本身不确定。你也不清楚自己要降低到什么版本才可以往往会有问题。在安装时会有这种提示问题导致越来越麻烦。The following packages are incompatible ├─ intel-openmp 2024.1** does not exist (perhaps a typo or a missing channel); ├─ mkl-service 2.5.2** is installable with the potential options │ ├─ mkl-service 2.5.2 would require │ │ └─ mkl 2025.0.0,2026.0a0 , which can be installed; │ ├─ mkl-service 2.5.2 would require │ │ └─ mkl 2024.2.2,2025.0a0 , which can be installed; │ ├─ mkl-service 2.5.2 would require │ │ └─ mkl 2025.3.0,2026.0a0 , which can be installed; │ ├─ mkl-service 2.5.2 would require │ │ └─ python 3.11,3.12.0a0 , which can be installed; │ ├─ mkl-service 2.5.2 would require │ │ └─ python 3.12,3.13.0a0 , which can be installed; │ ├─ mkl-service 2.5.2 would require │ │ └─ python 3.13,3.14.0a0 , which can be installed; │ ├─ mkl-service 2.5.2 would require │ │ └─ python 3.14,3.15.0a0 , which can be installed; │ ├─ mkl-service 2.5.2 would require │ │ └─ python 3.14.0rc2,3.15.0a0 with the potential options │ │ ├─ python [3.14.0|3.14.1|3.14.2|3.14.3|3.14.4], which can be installed; │ │ └─ python [3.14.0rc2|3.14.0rc3] would require │ │ └─ _python_rc, which does not exist (perhaps a missing channel); │ └─ mkl-service 2.5.2 would require │ └─ python 3.9,3.10.0a0 , which can be installed; ├─ mkl 2024.1** is not installable because it conflicts with any installable versions previously reported; └─ pin-1 is not installable because it requires └─ python 3.10.* , which conflicts with any installable versions previously reported.其实conda在安装包的时候不帮你协调当前环境的依赖包的对应关系来决定升降级找到了包就直接安装。所以上述其他方案都是要你可以直接使用命令来修改包版本使其强制依据依赖关系来协调版本。但是其实官方安装命令中的-c torch 已经将相关信息都包括好了。可以通过下面命令来修改这里的修改直接修改/.condarc文件也可以直接查看这个文件# 设置频道优先级为 strict这是目前 Conda 推荐的模式能减少依赖冲突 conda config --set channel_priority strict针对这个变量的值可以使用命令conda config --show channel_priority来查看。它会列出当前的优先级策略输出通常有三种可能flexible(默认)Conda 会权衡渠道优先级和版本新旧。strictConda 严格按照渠道顺序搜索只要高优先级渠道有这个包哪怕版本低一点也会用。disabled完全不看渠道顺序只看版本号。例如如果我们标准输入pytorch官方previous安装命令conda install pytorch2.5.1 torchvision0.20.1 torchaudio2.5.1 pytorch-cuda12.1 -c pytorch -c nvidia【strict】 只会从pytorch通道安装 pytorch 系列包不会从 nvidia拉取版本【flexible】下pytorch 主包会从pytorch安装但其依赖如果在pytorch没有可能会从 nvidia取【disabled】pytorch 可能从 conda-forge 安装只要版本最高不一定是第一个通道。这也表示当我们查看/.condarc文件的channels项时我们的安装搜索顺序就是从第一行开始搜索conda没有找到才会到第二行地址去寻找接着下一行以此类推。而这里我们需要的就是严格的一致性问题就在于默认的flexible会导致选择到default的依赖包而不是torch里面的依赖包而torch里面的依赖是刚刚好配的。所以只要我们设置好后重新conda create 一个新环境然后按照pytorch命令安装再次运行pytorch代码就会出现类似这一段代表这一次的安装所有的版本依赖都完成不会有问题了。The following packages will be UPDATED: libuuid anaconda/pkgs/main::libuuid-1.41.5-h5~ -- anaconda/cloud/conda-forge::libuuid-2.42-h5347b49_0 openssl anaconda/pkgs/main::openssl-3.5.5-h1b~ -- anaconda/cloud/conda-forge::openssl-3.6.2-h35e630c_0 The following packages will be SUPERSEDED by a higher-priority channel: _openmp_mutex anaconda/pkgs/main::_openmp_mutex-5.1~ -- anaconda/cloud/conda-forge::_openmp_mutex-4.5-7_kmp_llvm libzlib anaconda/pkgs/main::libzlib-1.3.1-hb2~ -- anaconda/cloud/conda-forge::libzlib-1.2.13-h4ab18f5_6 python anaconda/pkgs/main::python-3.10.20-h7~ -- anaconda/cloud/conda-forge::python-3.10.12-hd12c33a_0_cpython sqlite anaconda/pkgs/main::sqlite-3.51.2-h3e~ -- anaconda/cloud/conda-forge::sqlite-3.46.0-h6d4b2fc_0 zlib anaconda/pkgs/main::zlib-1.3.1-hb25bd~ -- anaconda/cloud/conda-forge::zlib-1.2.13-h4ab18f5_6

更多文章