2025-03-20 17:45:49 /usr/local/lib/python3.9/site-packages/torchvision/models/detection/anchor_utils.py:63: UserWarning: Failed to initialize NumPy: _ARRAY_API not found (Triggered internally at …/torch/csrc/utils/tensor_numpy.cpp:77.) 2025-03-20 17:45:49 device: torch.device = torch.device(“cpu”), 2025-03-20 17:45:49 Traceback (most recent call last): 2025-03-20 17:45:49 File “/app/app.py”, line 4, in <module> 2025-03-20 17:45:49 import nibabel as nib 2025-03-20 17:45:49 File “/usr/local/lib/python3.9/site-packages/nibabel/init.py”, line 41, in <module> 2025-03-20 17:45:49 from . import analyze as ana 2025-03-20 17:45:49 File “/usr/local/lib/python3.9/site-packages/nibabel/analyze.py”, line 88, in <module> 2025-03-20 17:45:49 from .arrayproxy import ArrayProxy 2025-03-20 17:45:49 File “/usr/local/lib/python3.9/site-packages/nibabel/arrayproxy.py”, line 39, in <module> 2025-03-20 17:45:49 from .volumeutils import apply_read_scaling, array_from_file 2025-03-20 17:45:49 File “/usr/local/lib/python3.9/site-packages/nibabel/volumeutils.py”, line 23, in <module> 2025-03-20 17:45:49 from .casting import OK_FLOATS, shared_range 2025-03-20 17:45:49 File “/usr/local/lib/python3.9/site-packages/nibabel/casting.py”, line 723, in <module> 2025-03-20 17:45:49 OK_FLOATS = ok_floats() 2025-03-20 17:45:49 File “/usr/local/lib/python3.9/site-packages/nibabel/casting.py”, line 717, in ok_floats 2025-03-20 17:45:49 floats = np.sctypes[‘float’][:] 2025-03-20 17:45:49 File “/usr/local/lib/python3.9/site-packages/numpy/init.py”, line 397, in getattr 2025-03-20 17:45:49 raise AttributeError( 2025-03-20 17:45:49 AttributeError: np.sctypes was removed in the NumPy 2.0 release. Access dtypes explicitly instead.
时间: 2025-07-09 22:48:54 浏览: 9
<think>好的,我现在需要帮用户分析他们遇到的错误信息。首先,用户提供的日志中有几个关键点需要注意。
首先看错误信息的时间戳是2025年,这显然是不合理的,可能是系统时间设置错误或者日志记录有误。不过这可能不影响问题本身的分析,但需要留意。
接下来是来自PyTorch的警告:“Failed to initialize NumPy: _ARRAY_API not found”。这个警告通常出现在PyTorch尝试与NumPy交互时,但NumPy未能正确初始化。可能的原因包括NumPy版本不兼容或安装损坏。用户还提到在导入nibabel时出现了回溯(Traceback),最终的错误是AttributeError,指出np.sctypes在NumPy 2.0中被移除,建议显式访问dtypes。
结合这些信息,问题可能出在NumPy的版本上。用户可能在使用NumPy 2.0或更高版本,而nibabel或PyTorch的某个依赖库尚未兼容该版本。具体来说,nibabel的代码中引用了已被移除的np.sctypes,导致导入失败。此外,PyTorch的警告也指向NumPy初始化问题,可能与版本冲突有关。
接下来,我需要验证这些推测是否正确。首先,检查NumPy 2.0的更新日志,确认sctypes是否确实被移除。根据官方文档,NumPy 2.0确实进行了API调整,移除了sctypes属性。这意味着任何依赖该属性的库在升级到NumPy 2.0后都会出现兼容性问题。
然后,查看nibabel的版本兼容性。如果用户安装的nibabel版本不支持NumPy 2.0,那么就会在导入时抛出错误。同样,PyTorch可能也尚未完全适配新版本的NumPy,导致初始化警告。
解决方案方面,首先建议用户降级NumPy到兼容的版本,例如1.x系列的最新版,如1.26.4。同时确保nibabel和PyTorch等依赖库的版本与NumPy兼容。可以使用pip命令进行版本管理,例如安装numpy<2.0.0。另外,检查库的官方文档或GitHub仓库,查看是否有已知的兼容性问题或更新版本已经支持NumPy 2.0。
另外,用户的环境可能存在依赖冲突,建议使用虚拟环境重新安装所有依赖,确保版本匹配。如果问题依然存在,可能需要等待相关库的更新,或者手动修改代码中的不兼容部分(但这对普通用户来说可能较困难)。
最后,提醒用户注意系统时间的错误设置,虽然不影响当前问题,但可能在其他场景下引发异常。</think>以下是针对该错误的逐步分析和解决方案:
**错误分析:**
1. **NumPy 2.0不兼容问题**
关键报错行:`AttributeError: np.sctypes was removed in the NumPy 2.0 release`
说明`nibabel`依赖旧版NumPy的`np.sctypes`属性,但该属性在NumPy 2.0中已被移除。
2. **PyTorch的NumPy初始化警告**
警告`Failed to initialize NumPy: _ARRAY_API not found`表明PyTorch与当前NumPy版本存在兼容性问题。
3. **依赖链崩溃**
由于`nibabel`导入失败导致整个程序终止,且根本原因是NumPy版本升级破坏向下兼容性。
---
**解决方案:**
1. **降级NumPy版本(推荐)**
执行以下命令安装兼容的NumPy 1.x版本:
```bash
pip install "numpy<2.0.0" --force-reinstall
```
*验证是否成功*:
```python
import numpy as np
print(np.__version__) # 应输出1.26.4等1.x版本
```
2. **检查`nibabel`版本兼容性**
确保`nibabel`版本支持NumPy 1.x:
```bash
pip install "nibabel>=5.0.0" --upgrade # 最新版通常已适配
```
3. **重建虚拟环境(可选)**
若依赖混乱,建议新建虚拟环境:
```bash
python -m venv new_env
source new_env/bin/activate # Linux/macOS
new_env\Scripts\activate # Windows
pip install torch torchvision nibabel numpy==1.26.4
```
4. **长期跟踪更新**
- 关注`nibabel`的[GitHub仓库](https://github.com/nipy/nibabel)确认是否已发布支持NumPy 2.0的版本
- 查看PyTorch官方文档关于NumPy版本的要求
---
**补充说明:**
- 若必须使用NumPy 2.0,可尝试修改`nibabel`源码中的`casting.py`第717行:
```python
# 原始代码 (已失效)
floats = np.sctypes['float'][:]
# 修改为
floats = [np.float32, np.float64] # 根据需求补充其他浮点类型
```
*注意:此方法需重新编译安装`nibabel`,仅建议高级用户操作*。
阅读全文
相关推荐


















