Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
16
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

はじめての人工知能。CentOS7.0 でTensorflow。virtualenvで、python3.5系とpython2.7系に分けて構築。

概要

Tensorflowのpythonのバージョンを切り替えて使用するため、python 2.7系、python3.5系でそれぞれ作ってみる。
※Tensorflowを色々な環境で試してみたい方用なので、こんなにたくさんインストールする必要はありません。
※ご自分の用途に合わせてインストールしてください。

環境

CentOS 7.0
python 2.7.5 (既存)

事前準備

yumのアップデート

yum update -y

yum の groupinstallで開発関連ツールを一括インストール。

# yum groupinstall "Development Tools"

python3.5.2をインストール

# wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
# cd Python-3.5.2
# ./configure --with-threads
# make altinstall
# cd

make installにしなかった理由は下記の通り。
※make install は python バイナリを上書きまたは覆い隠すかもしれません。
そのため、 make install の代わりに exec_prefix/bin/pythonversion しかインストールしない make altinstall が推奨されます。
参考:http://docs.python.jp/2/using/unix.html

pipのインストール

# wget https://bootstrap.pypa.io/get-pip.py
# python get-pip.py

pipをインストールしたらアップデートします。

# pip -V
# pip install --upgrade pip

pip コマンドがうまく発動しない場合はパスが通っていないので下記のコマンドでpipの場所を確認しパスを追加します。

# which pip

パスの追加に関しては、他の方々のページを参考にしてください。

普通編(参考):Linux パス(PATH)の確認と設定方法:pathの追加
http://blog.96q.org/2008/03/21/path-setting-method/

上級編(参考):$PATH から特定のパスだけを削除する
http://qiita.com/ironsand/items/10e28d7589298090ec23

pyenv と pyenv-virtualenv をクローンする
ついでなので、pyenv-virtualenvwrapper もインストールしておきます。

# git clone https://github.com/yyuu/pyenv.git ~/.pyenv
# git clone git://github.com/yyuu/pyenv-virtualenv.git ./.pyenv/plugins/pyenv-virtualenv
# git clone https://github.com/yyuu/pyenv-virtualenvwrapper.git ./.pyenv/plugins/pyenv-virtualenvwrapper

次に、パスを追加します。

# vi ~/.bashrc

# ~/.bashrc に下記を末尾に追加
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

.bashrcと.bash_profileについては下記を参考にさせていただきました。

参考:本当に正しい .bashrc と .bash_profile の使ひ分け
http://qiita.com/magicant/items/d3bb7ea1192e63fba850

パスが通ったか確認

# source ~/.bashrc
# echo $PATH

gitをアップデート
~/.pyenvに移動して、gitがあることを確認したらアップデートさせます。
アップデートが終わったら、ホームに戻ります。

# cd ~/.pyenv
# ls -a
# git pull origin
# cd

pyenv 環境を確認
現在 system のみ存在していることがわかります。
※選択している環境の頭に(*)印がついていることを確認。

# pyenv versions
* system (set by /root/.pyenv/version)

続いて、pyenv でインストールできるものを一覧表示させます。

# pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  ・
  ・
  (中略)
  ・
  ・
  stackless-3.2.2
  stackless-3.2.5
  stackless-3.3-dev
  stackless-3.3.5
  stackless-3.4.1

色々なバージョンがインストールできることがわかります。

pyenv で python3.5系のインストール

python3.5系、python2.7系をインストールし、環境ごとにバージョンを切り替えられるように設定していきます。
今回は、python3.5.2 をインストールしてみます。

# pyenv install 3.5.2

※ちなみに、pythonのバージョンを間違えたときは、install を uninstall に変えればOK。
アンインストールしたい任意のバージョンを選択(下は、python 3.5.2を選択)

# アンインストール例
# pyenv uninstall 3.5.2

インストールできたら、rehashして確認。

# pyenv rehash
# pyenv versions
* system (set by /root/.pyenv/version)
  3.5.2

3.5.2が表示されていたら、インストール完了。
続いてpython2.7系をインストールします。
python2.7系をインストールされない方は、「pyenv-virtualenvを使ってTensorflowのpython環境を分ける(python3.5系)」に飛んでください。

pyenv で pytho2.7系のインストール

python2.7系をインストールします。

# pyenv install 2.7.11

Installing Python-2.7.11...
Installed Python-2.7.11 to /root/.pyenv/versions/2.7.11

インストールできたら、rehashして確認してみましょう。

# pyenv rehash
# pyenv versions
* system (set by /root/.pyenv/version)
  2.7.11
  3.5.2

python2.7.11がインストールできました。

pyenv-virtualenv を使って Tensorflow の python 環境を分ける(python3.5系)

virtualenvで、Tensorflowをpython3.5系で使用できる環境を作ります。

まず、環境を分けるためのディレクトリーを作成します。

# mkdir tensorflow352

ディレクトリー名は使用する python のバージョンがわかるよにするといいと思います。
pyenv-virtualenv で仮想環境の構築します。

# cd tensorflow352
# pyenv virtualenv 3.5.2 tensorflow352
# pyenv rehash
# pyenv local tensorflow352

環境が作成されたか確認します。

# pyenv versions
  system
  2.7.11
  3.5.2
  3.5.2/envs/tensorflow352
  anaconda3-4.1.0
* tensorflow352 (set by /root/tensorflow352/.python-version)

一番下に確認できました。

python のバージョンも確認してください。

# python -V
Python 3.5.2

pipのバージョンアップ
次にtensorflowをインストールしますが、その前に pip をバージョンアップしておきます。
バージョンアップしていないと、Tensorflow のインストール時に怒られます。
現在のフォルダーは、「tensorflow352」にいます。

# pwd
/root/tensorflow352

# pip install --upgrade pip

Collecting pip
  Using cached pip-8.1.2-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 8.1.1
    Uninstalling pip-8.1.1:
      Successfully uninstalled pip-8.1.1
Successfully installed pip-8.1.2

Tensorflowをインストールします。

# pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp35-cp35m-linux_x86_64.whl

Tensorflowが使えるか確認してみましょう。

# python

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 8
I tensorflow/core/common_runtime/direct_session.cc:58] Direct session inter op parallelism threads: 8
>>> print(sess.run(hello))
Hello, TensorFlow!

問題なく動きました。
pythonを終了させておきます。

>>> exit()

Tensorflowのインストール(python2.7系)

pyenvでpython環境を2.7系に切り替えます。

# cd
# pyenv global 2.7.11
# pyenv versions
  system
* 2.7.11 (set by /root/.pyenv/version)
  3.5.2
  3.5.2/envs/tensorflow352
  anaconda3-4.1.0
  tensorflow352

(*)印が2.7.11に移動しています

切り替わっていることが確認できました。

さらに、python のバージョンも確認してください。

# python -V
Python 2.7.11

続いて、Tensorflowをpython2.7系でインストールするための環境を作成します。

# mkdir tensorflow2711
# pyenv virtualenv 2.7.11 tensorflow2711

※後部の「tensorflow2711」は、各自で分かりやすい名称に変更することができます。tensorflowのpython2.7.11をインストールするのでわかりやすい環境名をつけます。

環境が作成されたか確認します。

# pyenv versions
  system
* 2.7.11 (set by /root/.pyenv/version)
  2.7.11/envs/tensorflow2711
  3.5.2
  3.5.2/envs/tensorflow352
  anaconda3-4.1.0
  tensorflow2711
  tensorflow352

確認できました。
python2.7.11がインストールされているか確認してみましょう。

# cd tensorflow2711
# python -V
Python 2.7.11

続いて、tensorflowをインストールします。
環境を「tensorflow2711」に切り替えてTensorflowをインストールします。

# pyenv local tensorflow2711
# pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl

Tensorflowが使えるか確認してみましょう。

# python

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 8
I tensorflow/core/common_runtime/direct_session.cc:58] Direct session inter op parallelism threads: 8
>>> print(sess.run(hello))
Hello, TensorFlow!

問題なく動きました。
pythonを終了させておきます。

>>> exit()

pyenv の global でsystemを選んでも元に戻らない時の対処法

わたしもハマりました。ありがとうございます。

# rm ~/.python-version

参考:pyenv globalで切り替わらない!
http://qiita.com/1234224576/items/11ad3509fe4b0a9a33ed

virtualenv の 「global」と「local」

python 環境を切り替える時に、この「global」と「local」を使うのですが、例えば今回のようにディレクトリーごとにTensorflowのpython環境を切り替えたい時に、該当するディレクトリーで「pyenv local tensorflow352」として指定しておけば、「cd」でカレントディレクトリーに戻ったら、先の環境から自動で抜け出すことができます。

[root]# pyenv versions
* system (set by /root/.pyenv/version)
  2.7.11
  2.7.11/envs/tensorflow2711
  3.5.2
  3.5.2/envs/tensorflow352
  tensorflow2711
  tensorflow352

[root]# cd tensorflow352                         <-- tensorflow352 に移動
[root tensorflow352]# pyenv local tensorflow352  <-- 切替
(tensorflow352) [root tensorflow352]# cd         <-- あたまに (tensorflow352) がつく
[root]# cd tensorflow352                         <-- ディレクトリを抜けると (tensorflow352) が自動ではずれる
(tensorflow352) [root tensorflow352]#            <-- 次に入ると自動で (tensorflow352) の環境に入る

間違いや、無駄な作業などがありましたら、ご指摘いただけたらと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
16
Help us understand the problem. What are the problem?