记一次import seaborn时出现的“ImportError: DLL load failed: 找不到指定的程序的差错”经历

前情
安装环境真是一件让人吐血的事情,记下这次经历,以后也许在我遇到其他问题的时候给我一些新的启发。
废话可能有点多的样子。

环境
windows
anaconda conda 4.8.2
seaborn和scipy,pandas这些包,我看了一下,好像都是安装anaconda时他自己就给我下载了。
python 3.7.6
问题
在import seaborn时,出现以下错误

import seaborn
Traceback (most recent call last):
File “”, line 1, in
File “D:\ProgramData\Anaconda3\lib\site-packages\seaborn_init_.py”, line 6, in
from .rcmod import *
File “D:\ProgramData\Anaconda3\lib\site-packages\seaborn\rcmod.py”, line 6, in
from . import palettes, orig_rc_params
File “D:\ProgramData\Anaconda3\lib\site-packages\seaborn\palettes.py”, line 10, in
from .utils import desaturate, set_hls_values, get_color_cycle
File “D:\ProgramData\Anaconda3\lib\site-packages\seaborn\utils.py”, line 7, in
from scipy import stats
File "D:\ProgramData\Anaconda3\lib\site-packages\scipy\stats_init
.py", line 384, in
from .stats import *
File “D:\ProgramData\Anaconda3\lib\site-packages\scipy\stats\stats.py”, line 185, in
from . import distributions
File “D:\ProgramData\Anaconda3\lib\site-packages\scipy\stats\distributions.py”, line 10, in
from .distn_infrastructure import (entropy, rv_discrete, rv_continuous,
File “D:\ProgramData\Anaconda3\lib\site-packages\scipy\stats_distn_infrastructure.py”, line 25, in
from scipy import optimize
File "D:\ProgramData\Anaconda3\lib\site-packages\scipy\optimize_init
.py", line 390, in
from .minimize import *
File “D:\ProgramData\Anaconda3\lib\site-packages\scipy\optimize_minimize.py”, line 30, in
from .trustregion_constr import minimize_trustregion_constr
File "D:\ProgramData\Anaconda3\lib\site-packages\scipy\optimize_trustregion_constr_init
.py", line 4, in
from .minimize_trustregion_constr import minimize_trustregion_constr
File “D:\ProgramData\Anaconda3\lib\site-packages\scipy\optimize_trustregion_constr\minimize_trustregion_constr.py”, line 4, in
from scipy.sparse.linalg import LinearOperator
File "D:\ProgramData\Anaconda3\lib\site-packages\scipy\sparse\linalg_init
.py", line 116, in
from .eigen import *
File "D:\ProgramData\Anaconda3\lib\site-packages\scipy\sparse\linalg\eigen_init
.py", line 11, in
from .arpack import *
File "D:\ProgramData\Anaconda3\lib\site-packages\scipy\sparse\linalg\eigen\arpack_init
.py", line 22, in
from .arpack import *
File “D:\ProgramData\Anaconda3\lib\site-packages\scipy\sparse\linalg\eigen\arpack\arpack.py”, line 45, in
from . import _arpack
ImportError: DLL load failed: 找不到指定的程序。

在网上百度了好久,终于解决了问题。
尝试1:
有人说他们是在命令行里可以正常的导入,移到了jupyter notebook或者pycharm里就会报错。网上百度到的好像说是什么搜索路径的问题,大概就是那个dll的路径并没有在程序的搜索路径当中。但因为我的问题是命令行就不能导入,所以没仔细研究。如果是这种问题的,大家可以试下这个方向去百度一下

尝试2
简单粗暴:conda升级+重装!
在我看到的各种文章当中,至少有三分之一的回答直接告诉我
1 conda upgrade --all
2 删掉出错的包。
3 重装出错的包。
关于这个出错的包主要指的是,离下面最近的出错的那个包或者导入的那个包(seaborn)
这个方法看起来非常粗暴,但是结合我在各大博客下翻阅别人回复的情况来看,他简单,但有效。不知道为什么conda的upgrade --all和重装总是能解决一些奇奇怪怪的问题,这可能就是玄学吧
并且在这个反复重装的过程中,为了节约时间,我熟悉了conda关于修改源(url)的各种命令。也算是有收获吧 (T-T)

尝试3
这个就感觉终于让我觉得,诶?这个好像有点靠谱的样子哦。
他给出的原因是:各个库(包)之间的兼容性问题。就是说有的包,他对于他依赖的其他包是有版本要求的,有可能他依赖的包的版本低了或高了之后,就不兼容他这个功能了。这大概也是在学习机器学习,数据分析这些中间一个经常出现的问题吧,所以会有一些对别人的模型啊,代码啊进行重构的情况。
好了回到正题

1查看当前环境下安装的包

conda list

2用这条命令查看关于某个包(pkgName)的各个版本的详细信息。

conda search -i pkgName(包名)

在这里插入图片描述

接下来就重复这个方法,看看那些和你报错相关的包存不存在这样的依赖性问题,如果有,就适当调高或者调低版本,去安装新的库就好了。
不过悲惨的是,我的依赖我做了个表格检查了半天,感觉没问题T-T

尝试4——我成功的方法
晚上十一点过我还没安装好的时候,我爸来了,他说了一句:我搞不懂你这个,但是我有时候安软件的时候他好像就是因为之前安了一些其他的东西,后面再安新软件就会出错。但是重装系统之后,先安这个新软件就没问题。
刚开始我对他这句话并没有很在意,后面突然在网上看到有个人,就是在conda里创建了一个新的虚拟环境,然后安装这个就成功了。
那我就突然觉得,可以试一下诶!
注:之前我在用anaconda的时候并没有创建过新的虚拟环境,现在才知道虚拟环境大有用处。因为你可以创建不同的环境,然后不同的环境里配置不同的库,这样就可以在各种环境之间切换,包的管理也很有秩序,非常实用!!!
好,进入正题:

1创建新的虚拟环境(python=自己指定想要的python版本)

conda create -n env_name python=3.6

2激活(进入)创建好的虚拟环境(这时候新虚拟环境里会很干净,适合来安装各种包)

activate env_name #退出直接deactivate

3然后再这里安装你想要的包就可以啦。
ps:记录一些常用的env有关的操作

conda remove -n env_name --all#删除虚拟环境
conda env list#查看所有虚拟环境

最后
至今也不知道为什么原来那个环境里导入会失败,这个问题留着以后有缘分再来解决吧。
虽然最后解决问题的方案好像很简单的样子,但是确实耗费了好多时间在这上面。记录下这个,希望以后能得到一些启发,然后遇到烦人的问题也能坚持去找解决方法。

发布了11 篇原创文章 · 获赞 0 · 访问量 123

猜你喜欢

转载自blog.csdn.net/weixin_43215032/article/details/104663864