Windows下直接安装TensorFlow教程(解决SSL module is not available和DLL load failed问题)

在学习TensorFlow前,安装tensorflow模块似乎没那么简单。我们知道,要想安装python的模块可以使用pip install命令,但是直接从国外网站下载文件不仅是速度慢,而且在使用pip install命令时会发现报超时错误进而下载失败,所以一般从国内镜像源下载,效率高又省事。不一定要修改配置文件去改变pip默认下载的地址,只需要每次下载前加上镜像源地址即可,比如下载pandas模块,只需要一句:python -m pip install pandas -i http://pypi.douban.com/simple --trusted-host pypi.douban.com,很快就下载安装完成了,如果遇见报错显示从豆瓣源找不到符合的版本,比如:Could not find a version that satisfies the requirement。也只需要自己下载后安装包,然后放到python的lib文件夹下或者直接到安装包文件夹下执行setup.py文件即可成功安装,但是TensorFlow的安装似乎没那么简单。

大多数人都是在Linux下安装的TensorFlow或者Windows下在Anaconda中去安装,直接在Windows下去安装似乎成功率不高。

首先尝试去官网或者镜像源直接下载whl文件,比如在豆瓣源(https://pypi.doubanio.com/simple/tensorflow)中可以看到如下页面:

我的python是3.7版本,所以选择一个cp37的amd64版本点击下载即可。下载完成后dos窗口进入下载文件所在文件夹中,直接pip install 该文件,发现会报两个错误:

1.Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) – skipping

2.ERROR: Could not find a version that satisfies the requirement astunparse==1.6.3 (from tensorflow==2.2.0rc2) (from versions: none)

先说第二个错误,大意是找不到需要依赖的模块astunparse,这个错误超级坑,因为如果是下载的whl文件里没有这个模块,单独安装下即可,安装好这个模块再去运行whl文件,发现又显示缺少另一个模块,如果你不厌其烦的想把所有缺少的模块都安装完,会发现并没有什么用,因为第一次它显示找不到A模块,安装A后又报找不到B模块,然后安装B,...,安装E模块后发现又报找不到B模块,于是想着B模块好像刚才安装过了哦,再安装一遍,又显示找不到C模块。。。就是这么坑的错误提示,你安装了它还是不断提示找不到这个模块。这个错误其实是可以忽略的。

主要的问题在于第一个错误,Can't connect to HTTPS URL because the SSL module is not available,网上的解决办法有不少,比如手动安装openssl,或者直接pip安装pyssl,或者是用curl命令,或者是加参数像前面的--trusted-host pypi.douban.com命令一样选择信任该网站。这个错误的大概意思是说https的网站是加密的,你需要ssl证书才能够访问,但是我是直接从下载好的文件去安装的啊,根本不需要去访问镜像源网站,所以这个错误特别的莫名其妙,所有办法都试了一遍还是没有解决。又尝试下载了几个版本较低的还是同样安装失败,网上还有一种说法是版本问题。

>>> import pip._internal
>>> print(pip._internal.pep425tags.get_supported())

使用上面的命令就可以查看pip支持安装的版本了,有人说可能是whl文件命名不对,于是我把tensorflow-2.2.0rc2-cp37-cp37m-win_amd64.whl改成tensorflow-2.2.0rc2-cp37-none-win_amd64.whl,当然还是没有用。

知乎上有人说官网上的tensorflow不支持python3.7,这只是一年前的问题,并不知道现在问题是否存在。还有人说直接用pycharm去安装tensorflow,不用考虑什么版本问题了,我试了下发现还是提示找不到匹配的tensorflow版本,这时候突然想到之前的一个网站有提到安装tensorflow一定要下载对应版本的,包括32位和64位都不能错,而在官网和镜像源网站上我都仅仅找到win64版本,并没有找到32位的版本,所以当时忽略了这个问题。于是使用

>>> import platform
>>> platform.architecture()
命令查看自己安装的python版本,果然是32位的,于是明白了之所以直接从镜像源或者官网上pip下载tensorflow会显示找不到匹配的版本,只是因为上面压根就没有适合32位的tensorflow版本。所以我立刻去官网下载安装了python3.7的64位版本,然后将之前安装的模块安装一遍,接着再执行pip install tensorflow-2.2.0rc2-cp37-cp37m-win_amd64.whl,想着这次是64位的python,应该不会报错了吧,没想到会是报同样错误。

于是直接从豆瓣源进行下载安装,执行 python -m pip install tensorflow -i http://pypi.douban.com/simple --trusted-host pypi.douban.com。没有再报错,安装成功了。所以这次的问题主要是一定要保证自己装的python是win64版本,然后直接使用常规的安装命令即可。

然而当我激动地import tensorflow as tf时,却再次报错DLL load failed: 找不到指定模块\Failed to load the native TensorFlow runtime。一搜索发现这个问题的解决办法更是五花八门,一个个试还是没效果,出现这个问题的大部分人都是安装了gpu版本,而我是装了cpu版本,突然看见一个看起来有效的方法:pip install --upgrade --ignore-installed tensorflow,尝试了下,安装了很多东西,结果还是没有解决问题。直到看见一个博客这样写到:

1、打开cmd命令窗口,先 pip uninstall tensorflow

2、接着 pip install Tensorflow==1.5

3、关掉pycharm,再重新打开pycharm项目程序

4、运行

也就是安装低版本的tensorflow。于是卸载后执行python -m pip install tensorflow==1.5 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com,发现找不到匹配版本,于是继续尝试1.6,1.7,1.8,1.9都是找不到匹配版本,我之前安装的是2.1以及2.2版本,也就是最新的两个版本,于是最后一次尝试python -m pip install tensorflow==2.0 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com。运行没有报错了,想着应该是低版本的镜像源不好查找吧,就开始安装2.0的tensorflow。当然,没有抱有太大希望,想着再失败我就去下载1.5版本的手动安装,安装结束后,再次执行import tensorflow as tf,没有很快出结果,于是换到其他页面等一会,想着百分之九十还是会报错的,结果再次打开dos发现没有报错,成功执行了,这就意味着成功的安装了tensorflow。

通过这次漫长的安装,明白了其中许多错误的原因,下面总结下windows下安装tensorflow的方法

首先确保安装的python是64位版本的,然后找到对应版本的tensorflow安装包,最好不要装最新的,我的python是3.7的,装2.0的tensorflow就好,执行python -m pip install tensorflow==2.0 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com命令应该就能够很快安装成功了。

同时,分析下前面那么多报错的原因。

除了python版本的原因,我最开始用pip install执行whl文件提示ssl不可用,并不是ssl不可用,而是pip版本问题。需要配置环境变量,找到pip3.exe的位置,我的是在F:\python\Scripts中,加入了环境变量的Path中,然后执行pip3 install +whl文件名就不会报ssl错误了,出现这个错误的原因应该是你安装的是python3对应的tensorflow,而系统默认的pip版本太旧,配置环境变量后使用pip3安装,不论是从下载好的whl文件安装还是从镜像源安装都不会报错了。当然,从镜像源安装也可以使用我前面使用的python -m pip install语句。(这个原因是后面导入模块错误我寻找解决方案才发现的。)

第二个错误是导入模块错误,如果装的是GPU版本,很可能是CODA版本不匹配。如果是CPU版本,可能是电脑CPU上面硬件配置低了,安装旧点的版本即可。另外,在使用uninstall卸载已安装的tensorflow版本时,往往会卸载不干净,当你卸载后安装不同版本的tensorflow时,会自动帮你卸载干净,这可能也对最后问题的解决起到促进作用。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值