python动态库反初始化_解决TensorFlow的ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败...

【背景】

在scikit-learn基础上系统结合数学和编程的角度学习了机器学习后(我的github:https://github.com/wwcom614/machine-learning),意犹未尽,打算再借势学习下深度学习TensorFlow。无奈安装之后遇到了这个问题,耽误了几个小时才得以解决。

我发现这是个很多人开始TensorFlow之旅普遍遇到的问题,而且是很多人尝试了网上很多方法都未解决的问题。排坑过程很烦,主要是各种尝试很耗时间,最终自己找到了原因,解决了问题,共享给各位同学,少走弯路,抓紧上路,呵呵。

【遇到问题】

我是在Windows环境下,使用Anaconda3的python3.6.5环境,安装TensorFlow最简单的CPU版本(自己的搓平板电脑不支持GPU):

管理员身份运行Anaconda Prompt,然后执行:pip install tensorflow

安装过程非常顺利,Python中  import tensorflow  也OK

但是运行tensorflow程序时,报:

File "路径\Python\Python36\lib\importlib\__init__.py", line 126, in import_module

return _bootstrap._gcd_import(name[level:], package, level)

File "", line 978, in _gcd_import

File "", line 961, in _find_and_load

File "", line 950, in _find_and_load_unlocked

File "", line 648, in _load_unlocked

File "", line 560, in module_from_spec

File "", line 922, in create_module

File "", line 205, in _call_with_frames_removed

ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败。

【解决过程】

网上搜索有人说,这是使用Python3.6导致的,TensorFlow目前只支持Python3.5。但我在TensorFlow官网发现其已经支持Python3.6。但我考虑也许最新版本支持不完善?反正咱用的是Anaconda,换个Python版本so easy(有兴趣可以查看我的另外一篇使用Anaconda的博客https://www.cnblogs.com/wwcom123/p/9152909.html)。轻松切换为Python3.5环境,发现问题依旧,那么不是这个问题。

于是我换回Python3.6.5版本继续尝试。

网上还有人说,这是未安装微软的Microsoft Visual C++ 2015 Redistributable Update 3导致,于是到https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=53587下载安装,发现机器上本来就有,而且问题依旧,那么也不是这个问题。

最终想到,也许是最新版本有兼容性问题,安装老版本的TensorFlow尝试一下,于是管理员身份运行Anaconda Prompt,先卸载之前安装的最新版版本的TensorFlow:pip uninstall tensorflow   , 然后执行:pip install tensorflow==1.3。结果问题解决。

【结论】

目前可以基于Python3.6.5版本进行TensorFlow开发。根本原因是自己的电脑不新,CPU尽管是Intel的,但不新也许太老不主流了,TensorFlow的新版本已不打算继续支持这种CPU了。所以我尝试1.3版本的TensorFlow是OK的,但最新的1.8版本就报错了(1.4版本会有个warning)。

打开App,阅读手记

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值