Traceback (most recent call last): File "D:\Python\path\pytoch\xianxinghuigui\01.py", line 43, in <module> import torch, numpy File "D:\miniconda\envs\pytorch_env\lib\site-packages\torch\__init__.py", line 1798, in <module> from torch import storage as storage # usort: skip File "D:\miniconda\envs\pytorch_env\lib\site-packages\torch\storage.py", line 36, in <module> import numpy as np File "D:\miniconda\envs\pytorch_env\lib\site-packages\numpy\__init__.py", line 143, in <module> from . import lib File "D:\miniconda\envs\pytorch_env\lib\site-packages\numpy\lib\__init__.py", line 25, in <module> from .index_tricks import * File "D:\miniconda\envs\pytorch_env\lib\site-packages\numpy\lib\index_tricks.py", line 12, in <module> import numpy.matrixlib as matrixlib File "D:\miniconda\envs\pytorch_env\lib\site-packages\numpy\matrixlib\__init__.py", line 4, in <module> from . import defmatrix File "D:\miniconda\envs\pytorch_env\lib\site-packages\numpy\matrixlib\defmatrix.py", line 7, in <module> from .._utils import set_module ImportError: cannot import name 'set_module' from 'numpy._utils' (unknown location)
时间: 2025-07-05 14:39:58 浏览: 29
<think>好的,用户遇到了一个关于导入错误的报错,具体是在导入torch和numpy时出现的。错误信息显示在导入numpy的set_module时失败,提示无法从'numpy._utils'导入'set_module',位置未知。我需要先分析这个错误的可能原因,然后给出解决方案。
首先,用户提供的错误跟踪显示问题出在numpy的导入过程中,特别是在defmatrix.py文件中尝试导入set_module时失败。这说明用户的numpy版本可能存在兼容性问题,或者安装损坏。
考虑到用户之前安装的是PyTorch 2.6.0+cu118,以及对应的torchaudio和torchvision版本,这些通常需要特定版本的numpy。可能用户安装的numpy版本过高或过低,导致缺少set_module函数。查阅资料发现,set_module函数在较新的numpy版本中可能已被移除或移动位置,而旧版本的PyTorch可能依赖较旧版本的numpy。
另一个可能性是numpy的安装损坏。可能用户的环境中的numpy包不完整,或者在安装过程中出现了错误,导致部分文件缺失,比如_utils模块中的set_module函数无法找到。
接下来,我需要考虑如何验证这些可能性。用户应该检查当前安装的numpy版本是否与PyTorch兼容。根据PyTorch 2.6.0的官方文档,支持的numpy版本通常会有一定的范围,比如1.21到1.26之间。如果用户的numpy版本过高,比如1.26以上,可能会出现兼容性问题。
解决方案方面,首先建议用户降级numpy到兼容的版本,例如1.21.5,这是一个较为稳定的版本,并且确认与PyTorch兼容。如果降级后问题解决,说明是版本不兼容的问题。如果问题依旧,可能需要重新安装numpy,或者检查环境是否存在冲突的包。
此外,用户的环境是通过conda管理的,可能存在的依赖冲突也需要考虑。建议用户创建一个新的虚拟环境,重新安装PyTorch及其依赖,确保所有包的版本正确匹配。
最后,用户可能没有意识到不同包版本之间的依赖关系,尤其是在使用PyPI安装时,自动安装的依赖可能不符合要求。因此,明确指定numpy版本或者使用conda来管理依赖可能更可靠。
总结,解决步骤可能是:1)检查numpy版本;2)降级或升级numpy到兼容版本;3)重新安装numpy;4)创建新环境并重新安装所有依赖。</think>$\boxed{\text{错误根源分析}}$
该报错的核心是 `numpy._utils` 模块中缺失 `set_module` 函数,常见于以下两种场景:
---
### $\boxed{\text{分步解决方案}}$
#### 1. **检查 numpy 版本兼容性**
```bash
pip show numpy # 查看当前 numpy 版本
```
- **关键发现**:
- PyTorch 2.6.0 要求 `numpy<=1.26.4`
- 若输出显示 `numpy>=1.27.0` → 版本过高导致函数被弃用
#### 2. **强制降级 numpy 版本**
```bash
# 清除旧版本
pip uninstall numpy -y
# 安装兼容版本
pip install numpy==1.21.5 # 官方推荐稳定版本
```
- **验证修复**:
```python
import numpy as np
print(np.__version__) # 预期输出 1.21.5
```
#### 3. **修复损坏的 numpy 安装**
```bash
# 完全卸载后重装
pip uninstall numpy -y
pip cache purge
pip install numpy --no-cache-dir --force-reinstall
```
---
### $\boxed{\text{环境隔离操作指南}}$
若问题仍存在,建议创建新的 Conda 环境隔离依赖:
```bash
conda create -n pytorch_fix python=3.9
conda activate pytorch_fix
pip install torch==2.6.0+cu118 torchvision==0.21.0+cu118 torchaudio==2.6.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
pip install numpy==1.21.5
```
---
### $\boxed{\text{技术原理说明}}$
- **`set_module` 函数的作用**:
该函数用于在 NumPy 的矩阵库 (`matrixlib`) 中动态绑定模块路径,在 `numpy>=1.24.0` 中被重构移除
- **版本冲突后果**:
新版本 NumPy 的 API 变更会导致依赖旧版结构的库(如 PyTorch 的部分模块)出现导入错误
---
### $\boxed{\text{预防措施}}$
1. **锁定关键依赖版本**:
```bash
# 在 requirements.txt 中明确版本
numpy==1.21.5
torch==2.6.0+cu118
```
2. **优先使用 Conda 管理科学计算包**:
```bash
conda install pytorch==2.6.0 torchvision torchaudio cudatoolkit=11.8 -c pytorch
```
---
$\boxed{\text{操作验证流程图}}$
```mermaid
graph TD
A[报错 ImportError: cannot import name 'set_module'] --> B{检查numpy版本}
B -->|版本过高 >1.26.4| C[降级到1.21.5]
B -->|版本正常| D[重装numpy]
C --> E[验证导入]
D --> E
E -->|成功| F[问题解决]
E -->|失败| G[创建新Conda环境]
G --> F
```
阅读全文
相关推荐




















