解决Pycharm创建虚拟环境FileNotFoundError:[Errno2]和运行时ImportError: DLL load failed异常

异常描述

最近需要使用机器学习进行一些验证,选用了比较流行的一些软件,搭建了Anaconda3+pycharm的开发环境。本来程序在笔记本上可以跑,但笔记本的CPU跟不上,运行很慢,于是申请了配置比较高的新机器,重新搭建了环境,然而没想到一不小心就搭出问题了。

简单列个表总结一下我尝试的各种情况:

pycharm版本 Anaconda3版本 对应的python版本 项目运行情况
professional-2018.2.4 2018.12-Windows-x84_64 3.7.1 Scientific模式,运行正常
community-2019.2.1 2019.03-Windows-x84_64 3.7.3 无法启用Scientific模式,普通程序运行正常
professional-2018.2.4 2019.03-Windows-x84_64 3.7.3 Scientific模式,新建项目异常,运行异常

运行异常时的报错信息如下:

1. pycharm新建虚拟环境失败–FileNotFoundError

移植到新机器上装好软件之后试了一下,居然就出错了,异常是这样子:
在这里插入图片描述
说找不到目录什么的,这个异常可以看出是虚拟环境初始化的时候出现问题。不慌,我想着不必每次都去新建一个,用已有的环境也行。

于是针对这个问题,尝试了一个解决方案:把代码拷贝到项目里,在settings里修改了Python的解释器,令它的运行环境为base。

然后代码导包的地方果然就没有报红了,普通的Python程序也能运行。结果还没高兴两分钟,运行时出现了另一个异常。

2. pycharm运行代码失败–ImportError

运行机器学习代码的时候出现了动态库找不着的问题,这个异常长这样:
在这里插入图片描述
异常信息有一屏长,看着令人绝望。

我琢磨着sklearn模块也装了,导包的代码也没飘红,该有的都有,怎么就找不着了呢?然而质疑也没有办法,它就是异常,异常就不能运行,还是要解决的。

这一屏大概是说导包有问题,有些文件找不到在哪。而查看解释器里的包,发现这些异常的模块都有。可见不是单个程序没装包的问题,很可能是虚拟环境运行时异常引发的,联想到新建项目时的报错信息,从头开始排查问题。

3. FileNotFoundError的一种解决方法–无效

网上搜索了一通,发现有人解决FileNotFoundError的方法是在缺失文件的Anaconda目录下添加文件。由于我曾经在笔记本上运行成功过,那时并没有对Anaconda进行任何修改,直觉这个方法应该不行,但还是试了一下,过程是这样的:

  1. 查看报错信息,确定缺失的文件、文件所在的目录:
    在这里插入图片描述
  2. 将Anaconda3目录下的python.exe、python.pdb、pythonw.exe、pythonw.pdb四个文件拷贝到上述的Anaconda3\Lib\venv\scripts\nt目录下:
    在这里插入图片描述
    在这里插入图片描述
  3. 新建项目,测试是否能成功创建虚拟环境
    在这里插入图片描述
    项目可以成功创建,虚拟环境初始化也没问题了,然而——
    在这里插入图片描述
    啊,果然没什么用。

不过还是记录一下,如果有小伙伴通过这个方法解决了,那后面的就不用看了:)

解决方案

然后又是一通搜索,排除了各种包没有安装、包需要更新、包版本不对、路径不对、解释器配置不对等等一系列杂七杂八的可能性,最后找到一位同学的博客,链接如下:
https://blog.csdn.net/shuiyixin/article/details/99056908

这位同学很强,提出来跟常见解决方式不一样的思路,指出:

该错误是一个调试二进制的问题,将在upcomming 3.7.4版本中修复。

可选择降级、升级或者在没有调试二进制文件的情况下安装。

也就是说,这个问题只在python3.7.3中可能出现,而3.7.4及以后、3.7.2及以前的版本均没有。一查Anaconda,正好我也用了一样尴尬的版本。

此处还是有些奇怪的,此前我使用pycharm2019版本搭配Anaconda3的python3.7.3也是没问题的,不知道是哪里的版本不兼容。总之这是一个新思路,这位同学提出的解决方法是在Anaconda3中新建一个python3.5版本的虚拟环境,然后添加到pycharm中,详细过程可以去参考这位同学的博客。

我照着操作了一番,是可行的,但发现numpy、sklearn那些就都要自己再装一遍了,有点麻烦。索性决定换掉Anaconda3,这也是最终采用的方案,不用3.7.3就一劳永逸了。

替换的过程如下三个步骤。

步骤1-查看Anaconda3与python版本对应关系

由于是Anaconda3对应的python版本不对导致的问题,重新安装Anaconda需要先去确定Anaconda与python版本的对应关系。这个对应关系先前已经有同学整理好了,对应关系非常清楚,感谢这位同学。这里附上链接:Anaconda3与python版本对应关系
这里简单摘录与python3.7相关版本的对应关系:

Release date conda python3.7
2018-09-28 conda 4.5.11 Anaconda3-5.3.0(python 3.7.0)
2018-12-21 conda 4.5.12 Anaconda3-2018.12(python 3.7.1)
2018-12-24 3.7.2
2019-04-04 conda 4.6.11 Anaconda3-2019.03(python 3.7.3)
2019-07-08 3.7.4
2019-07-24 conda 4.7.10 Anaconda3-2019.07(python 3.7.3)
2019-10-15 3.7.5

查表排除3.7.3的发行版,下载需要的Anaconda3即可。我这里下载的是Anaconda3-2018.12,附上官网地址和下载镜像地址:
官网下载地址
清华镜像地址(推荐)

步骤2 完全卸载Anaconda3

下载好新的安装包,接着卸载已经安装的Anaconda3,过程如下:

  • 1.打开cmd或者Anaconda Prompt,输入如下命令安装Anaconda-Clean包:

conda install anaconda-clean

在这里插入图片描述
中间选y,安装完之后多了这些包。

  • 2.输入如下命令卸载:

anaconda-clean --yes

在这里插入图片描述

  • 3.运行Anaconda3目录下的Uninstall-Anaconda3.exe
    在这里插入图片描述
    接着等待三四分钟即可,Anaconda3整个文件夹都会被删掉。

步骤3 Anaconda3安装教程

下载好需要安装的Anaconda3版本,双击运行:
在这里插入图片描述
软件所需的空间比较大,适当修改一下安装目录:
在这里插入图片描述
可选择为个人或是所有用户安装,选哪个都可以。接着是这里,两个都勾上,上面那个是允许它添加环境变量:
在这里插入图片描述
然后等待五分钟左右,安装成功:
在这里插入图片描述
下面有个窗口询问是否要安装VSCode,由于已经安装了pycharm,这个就不装了,选Skip即可。最后一个界面选择finish,安装完成。

测试

重新装好了,先查看一下python版本号:
在这里插入图片描述
很好,换掉尴尬的3.7.3了,接下来新建项目看看能不能走。打开pycharm先等一下,更换版本后它需要重新建立一下索引:
在这里插入图片描述
接着在File-New project里新建一个项目,注意要选重新安装Anaconda3的目录,这里我安装在了跟之前相同的位置,所以目录看上去没有变化:
在这里插入图片描述
新建虚拟环境没有报错,打开项目的settings查看解释器已经安装的包:
在这里插入图片描述
很好,该有的都有。接着试着import一下随机森林,选择Use scientific mode:
在这里插入图片描述
在这里插入图片描述
这样就可以了,没有FileNotFoundError或者ImportError的异常了,完结撒花~~

总结一下:python3.7.3真是一个有坑的版本:)
当你遇到“明明什么都装了但就是有异常”的情况时,可以考虑一下兼容性、版本之类的问题。

猜你喜欢

转载自blog.csdn.net/weixin_40287414/article/details/110546997