import torch [numpy]报错 A module that was compiled using NumPy 1.x cannot be run in NumPy 2.2.3
·
vagrant@DESKTOP-QINAI5C /m/g/D/m/d/ops (main)> python (dqdetr)
Python 3.10.16 (main, Dec 11 2024, 16:24:50) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
A module that was compiled using NumPy 1.x cannot be run in
NumPy 2.2.3 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'.
If you are a user of the module, the easiest solution will be to
downgrade to 'numpy<2' or try to upgrade the affected module.
We expect that some modules will need time to support NumPy 2.
Traceback (most recent call last): File "<stdin>", line 1, in <module>
File "/home/vagrant/anaconda3/envs/dqdetr/lib/python3.10/site-packages/torch/__init__.py", line 1471, in <module>
from .functional import * # noqa: F403
File "/home/vagrant/anaconda3/envs/dqdetr/lib/python3.10/site-packages/torch/functional.py", line 9, in <module>
import torch.nn.functional as F
File "/home/vagrant/anaconda3/envs/dqdetr/lib/python3.10/site-packages/torch/nn/__init__.py", line 1, in <module>
from .modules import * # noqa: F403
File "/home/vagrant/anaconda3/envs/dqdetr/lib/python3.10/site-packages/torch/nn/modules/__init__.py", line 35, in <module>
from .transformer import TransformerEncoder, TransformerDecoder, \
File "/home/vagrant/anaconda3/envs/dqdetr/lib/python3.10/site-packages/torch/nn/modules/transformer.py", line 20, in <module>
device: torch.device = torch.device(torch._C._get_default_device()), # torch.device('cpu'),
/home/vagrant/anaconda3/envs/dqdetr/lib/python3.10/site-packages/torch/nn/modules/transformer.py:20: UserWarning: Failed to initialize NumPy: _ARRAY_API not found (Triggered internally at ../torch/csrc/utils/tensor_numpy.cpp:84.)
device: torch.device = torch.device(torch._C._get_default_device()), # torch.device('cpu'),
1. ```用户的 NumPy 版本太高了(2.2.3),和 PyTorch 不兼容。
2. PyTorch 的安装可能需要降级 NumPy 到1.x 版本。
3. 我需要确认用户的 PyTorch 版本和 Python 版本,以及用户的依赖关系,以给出更准确的建议。
4. 如果可能的话,创建一个新的 Conda 环境并安装兼容的版本是最好的办法
从你的错误信息来看,问题出在 **NumPy 2.2.3 的兼容性** 和 **`_ARRAY_API` 未找到**。以下是具体分析和解决办法:
### 问题分析
1. **NumPy 2.2.3 兼容性问题**:
- 错误信息提示,模块是使用旧版本的 NumPy 编译的,但你当前环境中有 NumPy 2.2.3。可能是某些依赖库(如 PyTorch)没有与 NumPy 2.x 兼容。
- 建议**降级 NumPy 到 1.x 版本**,因为很多现有库尚未完全适配 NumPy 2.x。
2. **`_ARRAY_API` 未找到**:
- 这是 NumPy 2.0 引入的接口标准,PyTorch 在某些场景下需要它来初始化或操作数组。
- 可能是由于 NumPy 安装不完整或版本问题导致接口缺失。
### 解决方法
以下是逐步解决问题的建议:
#### 1. 降级 NumPy 到 1.x
你需要将 NumPy 从 2.x 降级到 1.x 版本。可以通过以下命令实现:
```bash
conda install numpy=1.24 # 或 conda install numpy=1.23
或使用 pip:
pip install numpy==1.24
2. 升级 PyTorch
如果你使用的是 PyTorch 的旧版本,可能不支持 NumPy 2.x。你可以升级 PyTorch 到最新版本:
conda install pytorch::pytorch pytorch::torchaudio pytorch::torchvision -c pytorch -c nvidia
或者使用 pip:
pip install torch torchvision torchaudio --upgrade
3. 创建新的 Conda 环境
如果问题仍然存在,建议创建一个新的 Conda 环境,并安装兼容的依赖版本。例如:
# 创建新的环境
conda create -n new_dqdetr_env python=3.10
# 激活环境
conda activate new_dqdetr_env
# 安装依赖
pip install torch torchvision torchaudio numpy==1.24
4. 检查其他依赖
确保其他依赖库(如 opencv-python、scikit-learn 等)与 NumPy 1.x 兼容。可以使用以下命令检查:
conda list
验证
完成上述步骤后,重新启动 Python 并导入 torch:
import torch
print(torch.__version__)
如果问题解决,你应该能够正常导入并使用 torch。
总结
问题的核心是 NumPy 2.x 与部分库的兼容性问题。通过降级 NumPy 到 1.x 或升级相关依赖,可以解决这种版本冲突。如果问题仍然存在,建议使用虚拟环境彻底隔离依赖冲突。
更多推荐


所有评论(0)