5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ディープラーニングの理論と実装を学ぶためにpython環境を構築する

Last updated at Posted at 2017-01-01

最近は機械学習の勉強に向け、ちょこっとpythonを触り始めました。
今回はCentOS 7でのpython環境の構築について整理します。

環境

  • CentOS 7.2
  • python 3.5.2
  • VirtualBox 5.1.8

1. IUS Community Project のリポジトリを追加する

python 3系はCentOS 7のリポジトリでは提供されていないので、別途リポジトリを登録する必要があります。

# yum install -y https://centos7.iuscommunity.org/ius-release.rpm

ただ普段は使わないリポジトリなので、無効に変更して使用したい場合のみ使用するようにします。

# vim /etc/yum.repos.d/ius.repo
[ius]
enabled=1
↓
enabled=0

2. 最新のpythonをインストールする

iusで提供されている最新は3.5.2でしたので、今回はそれを使用します。

# yum clean all
# yum install --enablerepo=ius -y python35u python35u-libs python35u-devel python35u-pip

ただ、このままではデフォルトで入っているpythonにパスが向かっている状態なので、2系を指しています。

$ python --version
Python 2.7.5

なぜこのようになっているかというと、以下のようにエイリアスが貼られているからです。

# ls -l /bin/python                                                            
lrwxrwxrwx 1 root root 7 12月 17 17:56 /bin/python -> python2
# ls -l /bin/python2
lrwxrwxrwx 1 root root 9 12月 17 17:56 /bin/python2 -> python2.7
# ls -l /bin/python3*                                                          
-rwxr-xr-x 2 root root 11304  6月 28  2016 /bin/python3.5
lrwxrwxrwx 1 root root    26  1月  1 20:02 /bin/python3.5-config -> /usr/bin/python3.5m-config
-rwxr-xr-x 2 root root 11304  6月 28  2016 /bin/python3.5m
-rwxr-xr-x 1 root root   173  6月 28  2016 /bin/python3.5m-config
-rwxr-xr-x 1 root root  3398  6月 28  2016 /bin/python3.5m-x86_64-config

ここで注意ですが、pythonを3系にシンボリックリンクの貼り直しはNGです。
貼り替えてしまうと、python2系を使用している諸々が動かなくなってしまいます。

例えば、yumが使えなくなったります。こんなエラーとか出ます。

File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^

なので、3系を使用する場合はとりあえず以下のようにして使ってみます。
(普通はどう使うのが良いのか?pyenvとか使ったほうが良いのかな?)

# ln -s /bin/python3.5 /bin/python3
# python3 --version
Python 3.5.2

pipも2.7にパスがとおっているので。

# ln -s /bin/pip3.5 /bin/pip3
# pip3 --version
pip 9.0.1 from /usr/lib/python3.5/site-packages (python 3.5)

3. 外部ライブラリ NumPyとMatplotlibをインストールする

今回は勉強のために、多次元配列を提供する「NumPy」とグラフの描画やデータの可視化できる「Matplotlib」を使用します。

Matplotlibをimportするためには以下のパッケージも必要なのでインストールします。

# yum install --enablerepo=ius -y python35u-tkinter

続いて、NumPyとMatplotlibをインストールします。

# pip3 install numpy matplotlib

準備はこれで完了しました。
あとはこういうスクリプトを書いて動かせばグラフが出力できます。

sample-graph.py
 1 #!/bin/python3
 2 import numpy as np
 3 import matplotlib.pyplot as plt
 4 
 5 x = np.arange(0,6,0.1)
 6 y = np.sin(x)
 7 
 8 plt.plot(x, y)
 9 plt.show()

sample-graph

GUI環境でない場合の対処

SSHでリモートからの接続等GUI環境でない場合、上記のスクリプトのplt.plot(x, y)部分の実行で以下のエラーが出ると思います。

_tkinter.TclError: no display name and no $DISPLAY environment variable

以下の対処が考えれます。

対処1:グラフをファイルで出力する

まずはpythonの設定を変更します。

/usr/lib64/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc
 38 backend      : tkagg
 ↓
 38 #backend      : tkagg
 39 backend      : agg

上記の修正と合わせて、スクリプト「sample-graph.py」の最後の1行を以下のように修正します。

 8 plt.show()
 ↓
 8 plt.savefig('sample-graph.png')

これで指定したグラフをファイルに出力することができます。

対処2:GUIで操作する

sshでリモートから接続している場合は、直接マシンを操作するか。
マシンがCUIになっていれば、以下のコマンドでGUIに変更して操作するか。あとは良しなに!

# systemctl isolate graphical.target

さいごに

これで勉強するのに必要なpythonの環境構築はできたと思います。
(環境の準備で意外と時間を食ってしまった。。。)

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?