解決Python3.7不能安裝tensorflow<1.13的問(wèn)題

【2019.2.27更新】
Tensorflow1.13版本已經(jīng)正式發(fā)布,現(xiàn)在Python3.7直接安裝Tensorflow即可。

pip install tensorflow

本文的歷史使命宣告結(jié)束╰(°▽°)╯

如果讀者希望在Python3.7環(huán)境下安裝低于1.13版本的Tensorflow,請(qǐng)向下查閱有關(guān)內(nèi)容。

【2019.2.15更新】
Tensorflow1.13版本將正式支持Python3.7,目前還未正式發(fā)布,可以安裝RC版本。
注意:同時(shí)需要把NumPy升級(jí)到最新版本

pip install tensorflow==1.13.0rc1
pip install numpy --upgrade

經(jīng)測(cè)試,Mac、Windows、Linux下都可以正常運(yùn)行。
讓我們共同期待Tensorflow1.13版本的正式發(fā)布吧!

【2019.1.7更新】
關(guān)于Windows下出現(xiàn)“找不到DLL”錯(cuò)誤,導(dǎo)致無(wú)法import的問(wèn)題:
需要修改_pywrap_tensorflow_internal.pyd,可以參考這個(gè)GitHub Link
該文件為二進(jìn)制文件,最快捷的方式是利用https://hexed.it/這一網(wǎng)站進(jìn)行修改。對(duì)于CPU版本,找到python36(一處),將其替換為python37即可。

我已經(jīng)修改了一個(gè)適用于CPU的版本并上傳到百度網(wǎng)盤,鏈接: https://pan.baidu.com/s/14jTm2LUmjmvSgYsjyNJ9hw 提取碼: i453
下載后替換Python37\Lib\site-packages\tensorflow\python\目錄下的同名文件即可。

如果需要GPU支持,則需要按照上面鏈接中的方法,進(jìn)一步修改_pywrap_tensorflow_internal.pydPython37\Lib\site-packages\tensorflow\python\platform目錄下的build_info.py文件。

具體操作為:將_pywrap_tensorflow_internal.pyd中的64_90全部替換為64_92,將build_info.py中的64_90替換為64_929.0替換為9.2

【11.27更新】最新版本的tensorflow 1.12.0已經(jīng)修改了async變量名,可以直接安裝,方法如下

# Mac
pip install https://download.tensorflow.google.cn/mac/cpu/tensorflow-1.12.0-py3-none-any.whl

# Linux CPU
wget https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl
mv tensorflow-1.12.0-cp36-cp36m-linux_x86_64.whl tensorflow-1.12.0-cp37-cp37m-linux_x86_64.whl
pip install tensorflow-1.12.0-cp37-cp37m-linux_x86_64.whl

# Linux GPU
wget https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.12.0-cp36-cp36m-linux_x86_64.whl
mv tensorflow_gpu-1.12.0-cp36-cp36m-linux_x86_64.whl tensorflow_gpu-1.12.0-cp37-cp37m-linux_x86_64.whl
pip install tensorflow_gpu-1.12.0-cp37-cp37m-linux_x86_64.whl

# Windows CPU
# 下載https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.12.0-cp36-cp36m-win_amd64.whl
# 重命名文件,將36改為37
pip install tensorflow-1.12.0-cp37-cp37m-win_amd64.whl

# Windows GPU
# 下載https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.12.0-cp36-cp36m-win_amd64.whl
# 重命名文件,將36改為37
pip install tensorflow_gpu-1.12.0-cp37-cp37m-win_amd64.whl

注意:Linux和Windows環(huán)境下,下載的wheel包在名稱中顯示聲明了版本號(hào),為了能夠用pip正常安裝,需要一點(diǎn)小trick,也就是將wheel文件改名。
使用時(shí)可能會(huì)有RuntimeWarning: compiletime version 3.6 of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.7,并不影響使用,可以忽略。
如果需要使用tensorflow 1.10.0或更早的版本,下面??的方法仍然適用。

Mac

Homebrew作為一個(gè)包管理器什么都好,就是在版本管理方面不太方便。默認(rèn)只能裝最新版本,想回退到老版本得費(fèi)不少勁。這不,Python升級(jí)成3.7之后,就遇到了問(wèn)題:

不能導(dǎo)入tensorflow了!!!

這可是出大事了。咋辦呢?搜索了很久后在github上找到了解答:原網(wǎng)頁(yè)鏈接

具體來(lái)說(shuō),原因就是Python3.7新引入了保留字async,而tensorflow的代碼里,將其作為了變量名。要修改,方法也很簡(jiǎn)單:

首先找到下面這個(gè)文件:
/usr/local/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py
(如果用的是Anaconda這類發(fā)行版,就到對(duì)應(yīng)的site-packages目錄下找,不過(guò)用Anaconda的應(yīng)該沒(méi)這個(gè)問(wèn)題,因?yàn)锳naconda還沒(méi)有升級(jí)到Python3.7),然后搜索async(注意區(qū)分大小寫),全部替換為async1,保存關(guān)閉。

【11.21更新】注意,這里只替換單獨(dú)async(請(qǐng)參考下方“太陽(yáng)家的貓”同學(xué)的評(píng)論。)

打開(kāi)IPython測(cè)試一下:

import tensorflow as tf

沒(méi)有問(wèn)題,成功導(dǎo)入啦。


附:在Python3.7下安裝tensorflow

因?yàn)楝F(xiàn)在tensorflow還沒(méi)有官方添加對(duì)Python3.7的支持,所以用pip直接安裝是搜索不到合適的tensorflow包的,這時(shí)候就需要直接從.whl安裝。具體方法為(以Mac為例):

pip install https://download.tensorflow.google.cn/mac/cpu/tensorflow-1.10.0-py3-none-any.whl --upgrade

如果訪問(wèn)不了這個(gè)地址的,請(qǐng)自行解決。

安裝好之后,就按照上面的方法修改一下async就可以啦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容