Jupyter notebook 中用 pip 安裝 tensorflow

Galois發表於2020-03-03

環境說明

Mac + virtualenv + jupyterNotebook

檢視版本

$ python3 --version
$ pip3 --version
$ virtualenv --version

建立環境

在專案主目錄下建立環境在venv目錄,並啟用環境:

$ virtualenv --system-site-packages -p python3 ./venv
$ source ./venv/bin/activate # sh, bash, ksh, or zsh

如果是在fish下執行以上的source命令,末尾加上.fish,如:source ./env/bin/acticate.fish

退出環境命令:

(venv) $ deactivate

前面的(venv)表示當前的命令列在venv環境下。

開啟 Jupyter nootbook:

(venv) $ jupyter notebook

這時候瀏覽器會進入localhost:8888,在 jupyter notebook 中輸入import tensorflow as tf,執行後報錯:ModuleNotFoundError: No module named 'tensorflow'
現在我們在 jupyter notebook 內新增一個input程式碼塊(快捷鍵A)輸入:

!pip3 list

在 Jupyter notebook 程式碼塊中的程式碼前面加!表示輸入的是命令。

我們會看到pip3命令的可安裝包列表,如果裡面沒有tensorflow我們就需要更新一下本地pip3安裝包庫,新增程式碼塊並輸入:

!pip3 install -U -i https://pypi.tuna.tsinghua.edu.cn/simple/ tensorflow

其中https://pypi.tuna.tsinghua.edu.cn/simple/表示清華源,因為使用pip3原裝的國外源太慢了。
這時候可以看到下載速度飛快,眼看就要成功了,但要注意的是這時候可能會跳出報錯:

ERROR: Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

碰到這樣的問題我們就執行以下命令:

!pip3 install -U -i https://pypi.tuna.tsinghua.edu.cn/simple/ --ignore-installed wrapt enum34 simplejson netaddr

可能還會遇到一個問題:

ERROR: tensorboard 1.14.0 has requirement setuptools>=41.0.0, but you'll have setuptools 39.1.0 which is incompatible.

原因:setuptools版本太低
辦法:更新setuptools版本 輸入!pip install --upgrade setuptools(記得用國內源)
現在我們就可以順利的裝 Tensorflow 了,再輸入一遍從清華pip3源獲取tensorflow包的命令:

!pip3 install -U -i https://pypi.tuna.tsinghua.edu.cn/simple/ tensorflow

檢查下!pip3 list可以發現安裝包已到手,現在我們執行安裝命令:

!pip3 install tensorflow

愉快的安裝成功!,不過如果以前電腦裡裝了百度的庫paddlepaddle可能會在這有一條報錯,不礙安裝成功的事:

ERROR: paddlepaddle 1.3.2 has requirement requests==2.9.2, but you'll have requests 2.23.0 which is incompatible.

看起來沒問題了,可以說是裝好了。現在執行一下import tensorflow as tf執行成功,但可能會有一個小小的提示:

.../python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters

這不妨礙我們,不過想要解決根本問題,那就執行兩條命令:

!pip3 install -U -i https://pypi.tuna.tsinghua.edu.cn/simple/ h5py
!pip3 install h5py

現在再來看import tensorflow as tf已經沒問題了!
附上程式碼:

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf

from tensorflow import keras
print(tf.__version__)
print(sys.version_info)
for module in mpl, np, pd, sklearn, tf, keras:
    print(module.__name__, module.__version__)

輸出:

2.1.0
sys.version_info(major=3, minor=6, micro=4, releaselevel='final', serial=0)
matplotlib 2.2.3
numpy 1.18.1
pandas 0.22.0
sklearn 0.19.1
tensorflow 2.1.0
tensorflow_core.python.keras.api._v2.keras 2.2.4-tf

Jupyter kernel error 解決方法

在 Anaconda 命令列環境中執行!jupyter kernelspec list命令檢視 kernel 的位置,再進入安裝的 kernel 目錄,開啟 kernel.json 檔案,檢視 Python 直譯器的路徑是否正確。

pip3

我最不喜歡的就是 pippip3 兩個 python 版本的 pip 實在是讓人不舒服,我只關心 pip3
還是看看國內的「pip映象」吧:

本作品採用《CC 協議》,轉載必須註明作者和本文連結

不要試圖用百米衝刺的方法完成馬拉松比賽。

相關文章