如何修改Windows默认Python版本并解决NumPy安装时找不到Python.h的问题
如何修改Windows默认Python版本并解决NumPy安装时找不到Python.h的问题
看起来你碰到了两个关联的小麻烦:一是Windows里默认Python版本死活切换不到3.13,二是NumPy安装时卡壳在找不到Python.h头文件上。我来一步步帮你拆解解决~
一、先搞定默认Python版本的切换问题
从你的错误日志能看出来,当前pip调用的是MSYS2自带的Python(C:\msys64\ucrt64\bin\python.exe),而不是你安装的Python 3.13。这是关键!得分两种场景处理:
1. 普通CMD/PowerShell里的版本切换
- 先检查PATH的实际优先级:打开CMD输入以下命令,查看路径顺序:
看看你Python3.13的安装目录(比如echo %PATH%C:\Users\你的用户名\AppData\Local\Programs\Python\Python313\)和Scripts目录是不是排在MSYS2路径或者旧Python路径的前面。 - 手动调整环境变量:
右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量的PATH里:- 找到Python3.13的两个目录(主目录和Scripts目录),把它们移到列表最顶部;
- 同时可以把MSYS2的Python路径暂时移到后面,或者直接去掉(如果不需要在CMD里用MSYS2的Python);
- 保存设置后重启CMD,再输入
python --version和pip --version确认是不是已经切换到3.13了。
2. 如果是在MSYS2终端里操作
MSYS2会优先使用自己生态里的软件,所以你如果是在MSYS2的终端(比如ucrt64的终端)里运行pip,它会自动调用MSYS2自带的Python。这时候有两个选择:
- 要么在MSYS2里安装Python3.13:打开MSYS2终端,输入
pacman -S mingw-w64-ucrt-x86_64-python3.13,安装完成后终端里的Python就会切换到3.13; - 要么退出MSYS2终端,用普通CMD/PowerShell运行pip,确保调用的是你手动安装的Python3.13。
二、解决Python.h找不到的问题
其实不用非要换Python3.13,不管是3.11还是3.13,只要安装了Python的开发组件,Python.h就会存在。你的3.11找不到,大概率是当初安装时没勾选开发相关的选项:
1. 针对已安装的Python(3.11或3.13)
- 找到对应Python版本的安装程序(比如
python-3.11.7-amd64.exe或python-3.13.0-amd64.exe),双击运行; - 选择「Modify」(修改)选项;
- 在可选功能里,一定要勾选「Python development」(Python开发)、「Include headers」(包含头文件)这类选项,确保所有和开发相关的组件都被选中;
- 点击「Install」完成修改,之后
Python.h就会出现在Python安装目录的Include文件夹里了。
2. 更省心的方案:用MSYS2包管理器装NumPy
如果你是在MSYS2环境下开发,直接用MSYS2的包管理器装NumPy,它会自动处理所有依赖(包括Python头文件):
pacman -S mingw-w64-ucrt-x86_64-python-numpy
这样安装的NumPy是专门适配MSYS2环境的,不会出现头文件找不到的问题。
最后验证
等你把版本切换好,并且确保Python安装了开发组件后,再运行pip install numpy,应该就能顺利通过了~
备注:内容来源于stack exchange,提问作者Helikopter Bojowy
相关产品推荐
相关产品推荐

