执行pip3 install numpy时触发Preparing metadata错误,求解决办法
解决pip安装numpy时的Preparing metadata错误(mingw_x86_64平台)
问题核心
执行pip3 install numpy时触发以下错误:
- 核心报错:
AttributeError: 'NoneType' object has no attribute 'endswith' - 伴随提示:
Unknown Windows Python platform 'mingw_x86_64'
原因是numpy依赖的Meson构建工具无法识别Windows下的mingw_x86_64 Python平台,导致架构检测返回None,进而触发endswith调用失败。
解决方案
1. 使用MSYS2包管理器安装(推荐)
MSYS2自带针对mingw编译好的numpy包,完全适配当前环境:
pacman -S mingw-w64-x86_64-python-numpy
2. 强制pip使用预编译wheel包
避免从源码编译,让pip直接下载适配的预编译wheel:
# 先确保wheel工具已安装 pip install wheel # 强制使用预编译包安装numpy pip install numpy --only-binary :all:
3. 切换至Windows官方CPython环境
如果非必须使用mingw Python,可替换为python.org下载的官方CPython,之后直接执行:
pip install numpy
官方CPython不存在平台识别问题,兼容性更稳定。
4. 临时修复Meson源码(不推荐)
若必须从源码编译,可临时修改Meson的平台检测逻辑:
- 找到临时安装目录下的文件:
C:\Users\ASUS\AppData\Local\Temp\pip-install-xxxx\numpy_xxxx\vendored-meson\meson\mesonbuild\dependencies\python.py - 定位到报错行(约224行):
if mesonlib.is_windows() and self.get_windows_python_arch().endswith('64') and mesonlib.version_compare(self.version, '<3.12'): - 修改为:
if mesonlib.is_windows() and (self.get_windows_python_arch() is not None and self.get_windows_python_arch().endswith('64')) and mesonlib.version_compare(self.version, '<3.12'): - 重新执行
pip3 install numpy
(注:临时目录会被pip清理,此方法仅作应急使用)
内容的提问来源于stack exchange,提问作者TMWV
相关产品推荐
相关产品推荐

