在最近使用PyCharm时import matplotlib时突然报错:
ImportError: DLL load failed while importing _cext: %1 不是有效的 Win32 应用
我尝试了如下3种方法
①重装了Python,PyCharm(本来的目录太乱了,遂重装),无效。
②重新配备环境变量。
③卸载又重安装了pywin32,无效。
在尝试本方法时我知道了为什么我的电脑明明是64位系统,却有system32文件夹:
虽然您的电脑是64位系统,但仍然存在一个名为System32的文件夹。这是由于历史原因导致的一种命名约定。
在早期的64位Windows操作系统版本中,为了兼容32位应用程序,系统目录的名称仍然保持为"System32"。而64位特定的系统文件则存储在另一个文件夹中,称为"SysWOW64"。
虽然名称似乎会引起混淆,但请注意以下要点:
- System32文件夹包含用于64位应用程序的系统文件,以及那些保持向后兼容性的32位系统文件。
- SysWOW64文件夹包含用于32位应用程序的系统文件,这是为了向后兼容32位应用程序而创建的。
- 64位程序仍然将使用System32文件夹,而不是SysWOW64文件夹,因为它们使用的是64位系统文件。这种命名约定虽然可能会引起困惑,但它是为了确保在向后兼容性和支持旧的32位应用程序的同时,提供对新的64位应用程序的支持。
在以上方法都没用后,我查找到了以下方法:
1.首先在PyCharm的终端(底部栏的Terminal)或cmd里卸载已安装的numpy和matplotlib库
pip uninstall numpy
pip uninstall matplotlib
2.在cmd里查找自己Python的版本,我的是3.10.5。
3.在https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy里下载带mkl的numpy安装包。
注意其中符号含义,一定要选择带mkl的numpy。
(1)前面的1.22.4为numpy的版本号,一般选择最新版本即可
(2)中间的cp39表示对应python3.9.x版本
(3)后面的win_amd64表示对应的电脑的64位
4、将下载的安装包放在Python39-Scripts文件夹下,我的路径参考如下:
D:\Python310\Scripts
5.配置环境变量
此电脑右键——属性——高级系统设置——环境变量——Path。然后一直确定。
6.打开cmd输入,pip install +刚才复制的路径名+下载的文件包的文件名。如我的是:
pip install D:\Python310\Scripts\numpy-1.22.4+mkl-cp310-cp310-win_amd64.whl
-i https://pypi.tuna.tsinghua.edu.cn/simple
7. 回到PyCharm,发现import matplotlib.pyplot as plt不报错了。
问题原因:import matplotlib.pyplot as plt 中所有依赖库版本应满足要求,但报错的原因是在线pip install numpy时,使用pip下载numpy库中缺少DLL。需手动下载。