Pythonによるスクレイピング&機械学習[開発テクニック]の備忘録（5章）

# 5章

tensorflowのインストール直後から早速躓きました。
インストールできたかの確認（p204）で以下のコマンドを実行します。

```
root@19dc7f4125d1:~# python3
Python 3.4.3 (default, Oct 14 2015, 20:28:29)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'tensorflow'
```

tensorflowのモジュールが見つからないらしいです。
pip listで確認をしてみたらちゃんと「tensorflow (0.7.1)」が入っていました。

ところでpythonとpython3の起動方法が良くわかっていなかったのですが、pythonとpython3の起動方法では以下の様な違いがあります。

#### pythonで起動
```
root@19dc7f4125d1:/# python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
```
Python2.xが立ち上がります。

#### python3で起動
```
root@19dc7f4125d1:~# python3
Python 3.4.3 (default, Oct 14 2015, 20:28:29)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
```
Python3.xが立ち上がります。


それではと思い、python3ではなく、pythonでtensorflowをimportしてみます。

```
>>> import tensorflow as tf
>>> sess = tf.Session()
>>> hello = tf.constant('Hello')
>>> sess.run(hello)
'Hello'
```
大丈夫です。importできました。
pythonでimportできてpython3でimportできないのはpathの問題でしょうか。
tensorflowのpathを確認してみます。

```
>>> import tensorflow
>>> print tensorflow.__file__
/usr/local/lib/python2.7/dist-packages/tensorflow/__init__.pyc
```

やはり、tensowflowの実行モジュールはpython2.x下のパスにありました。
python3.xでもtensowflowが実行できるようにするためにはパスを設定すればOKです。

python3.xのパスをまず確認。

```
root@19dc7f4125d1:/# python3
Python 3.4.3 (default, Oct 14 2015, 20:28:29)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
>>>
```
ということで、以下のどこかに「/usr/local/lib/python2.7/dist-packages/tensorflow/\_\_init\_\_.pyc」を見るようにすればいいですね。
1. /usr/lib/python3.4
2. /usr/lib/python3.4/plat-x86_64-linux-gnu
3. /usr/lib/python3.4/lib-dynload
4. /usr/local/lib/python3.4/dist-packages
5. /usr/lib/python3/dist-packages

今回は5番の下に「/usr/local/lib/python3.4/dist-packages/custom.path」というファイルを作成し、そこに「/usr/local/lib/python2.7/dist-packages/tensorflow/\_\_init\_\_.pyc」を記載しました。

これにてpython3でもtensorflowをimportできました。

：
：

### 作戦変更（pip3でtensorflowをインストール）
何度か使っている間にまた、python3でtensorflowのimportができなくなりました。
作戦変更して、tensorflowをインストールすることにしました。
何も解決していないですが、先に進めます。

Python3で使用したいので、まずpip3を使えるようにします。

pip3が利用できない状態で以下のコマンドを実行しても何も返ってきません。

```
which pip3
```
以下のコマンドでpip3を使えるようにします。

```
apt install python3-pip
```

以下コマンドでpip3が使えるか再確認。

```
root@5ca7beea435b:/c/Users/yuki/my_dir/wap_scraping/src/ch5# which pip3
/usr/bin/pip3
```
結果が返ってきました。
準備ができたので、パスを設定してtensorflowをインストールします。


```
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.12.1-cp34-cp34m-linux_x86_64.whl
$ pip3 install --upgrade $TF_BINARY_URL
```

pip3 listを使って以下の結果がでます。

```
root@5ca7beea435b:/c/Users/yuki/my_dir/wap_scraping/src/ch5# pip3 list
chardet (2.2.1)
colorama (0.2.5)
html5lib (0.999)
numpy (1.11.3)
pip (1.5.4)
protobuf (3.1.0.post1)
pycurl (7.19.3)
pygobject (3.12.0)
python-apt (0.9.3.5ubuntu2)
requests (2.2.1)
setuptools (32.3.1)
six (1.10.0)
tensorflow (0.12.1)
unattended-upgrades (0.1)
urllib3 (1.7.1)
wheel (0.29.0)
```

calc1.pyも問題なく実行できました。

なかなか本の通り進まないですね。。


## 参考
[title]http://pcl.solima.net/pyblog/archives/57
[title]https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md