始めに
本記事は自己学習の結果を記事として残すためのものであり、自分と同じくこれから機械学習の勉強を始めようとしている方の、若干の手助けとなればと思い書いています。
Qiitaにはこの手の記事がたくさん存在しますが、「ここは分かってるだろうから説明は省くね」パターンが多く、自分には説明が足りない記事が多いため、バカ(自分)にも分かるように細かく書いているつもりです。
本当は実装部分まで書こうと思ったんですが、環境構築部分のボリュームが思いの外多かったため、分割することにしました。
※理解が足りてなく、間違いがある可能性があるので、ご指摘をいただけたら嬉しいです。
##内容
- Pythonの開発環境の構築
###単語
- Homebrew
- pyenv
- pyenv-virtualenv
###やったこと
機械学習の勉強を始めたとき、pythonの初心者でもあったので、環境を用意することに物凄く手間取りました。まずはPythonで開発するために必要な環境構築に関して記載しています。
###環境の準備
####1. Homebrew
#####1.1 Homebrewとは
Homebrewとは、MacOSのパッケージ管理ツールだそうです。もちろん、Homebrewを使用せずとも、インストーラーをダウンロードし、展開することで、パッケージのインストールは可能です。ただ、Homebrewを使用することで、ターミナルからコマンドを打つだけで、目的のパッケージのインストール/アンインストールが可能となり、手間が省けます。ここでは、Homebrewを使用して、後述するpyenvとpyenv-virtualenvをインストールします。
#####1.2 Homebrewをインストール
以下のコマンドをターミナル上で叩くだけです。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
※上記コマンドは頻繁に更新されるそうなので、以下HPにアクセスして、最新のコマンドを取得することをお勧めします。
HomebrewのHP
つらつらと大量のログが表示され、最後にユーザのパスワードを要求された場合は、パスワードを入力後、Enterを押します。
完了後、下記コマンドを入力し[Already up-to-date]と表示されれば、Homebrewのインストールは完了です。
$ brew update
#####2.pyenvのインストール
######2.1. pyenvとは
pythonのバージョンを切り替えることが可能なツールで、ディレクトリ毎に設定を切り分けることが可能です。
#####2.2 pyenvのインストール
以下のコマンドをターミナル上で実行します。
$ brew install pyenv
#####3 pyenv-virtualenv
######3.1 pyenv-virtualenvとは
pyenv-virtualenvとは、ディレクトリ毎に仮想環境を構築し、Pythonのバージョン、インストールしているパッケージの管理を行います。とはいえ、pyenvだけでもバージョンの管理は可能なので、どこが良いの?と言う疑問が浮上しました。調べたところ、pyenvではディレクトリ毎にPythonのバージョンを管理できるが、インストールしているモジュールはsite-package
という共通の管理ファイルを参照しているとのこと。そのため、別バージョンのモジュールを使いたい、みたいな場面には対応が難しいそうです。そこで、pyrenv-virtualenvを使用することで、このsite-package
をディレクトリ毎に管理が可能となり、別環境の影響から完全に独立することが出来る!みたいな感じです。
(もちろん、他にもメリットはあるっぽいのですが理解不足により割愛)
######3.2 pyenv-virtualenvのインストール
以下のコマンドをターミナル上で実行します。
$ brew install pyenv-virtualenv
#####4 環境変数の設定
これだけではインストールしたpynev、pyenv-virtualenvの設定が有効化されず、デフォルトでMacに入っているPythonの設定を参照してしまいます。ルートディレクトリに存在する.bash_profileの中身を編集して、環境変数にパスを追加します。(平たく言うと、今後Pythonを使用するときは、新しく導入したpyenvとpyenv-virtualenvの方の設定を参照してねって感じ)
bash_profileは、ターミナル起動時に参照する設定ファイルのようなものです。設定ファイルには.bashrcとかもあり、詳細は理解できてないですが、取り敢えず.bash_profileを編集することで問題なく動くので良しとします。
ターミナル上で以下のコマンドを入力し、.bash_profileを編集します。
※.bash_profileは隠しファイルのため、ls -a
で表示することができます。
vim .bash_profile
開いた.bash_profileに以下のコードを追記します。
export PYENV_ROOT="${HOME}/.pyenv" //${HOME}はデフォルトで設定されている変数
if [ -d "${PYENV_ROOT}" ]; then //パス(PYENV_ROOT)の存在確認
export PATH=${PYENV_ROOT}/bin:$PATH //:$PATHで、既存のパスも設定
eval "${pyenv init-)" //eval で変数部分を展開しています。
eval "$(pyenv virtualenv-init -)" //pyenvとpyenv-virtualenvの環境を初期化し、環境を有効化
上記のコードを入力後、ターミナルで以下のコマンドを入力することで、設定ファイルの更新をします。
(ターミナルを再起動するでも問題ありません。)
source ~/.bash_profile
#####5. pythonのインストール
pyenvではデフォルトでsystemしか入っていません。試しに、pyenv versions
コマンドを入力すると以下のような結果が返ってきます。
pyenv versions
*system
今回使用するPythonのバージョンは3.7.3
なので、以下のコマンドでインストールします。
pyenv install 3.7.3
#####6. 仮想環境の構築&Pythonのバージョン変更
これで3.7.3
のインストールが完了しましたが、まだ適応はされていません。もう一度、pyenv versions
を入力すると以下の結果が返ってきます。
$ pyenv versions
*system
3.7.3
上記から、デフォルトであるsystem
が選択されていることが分かります。作業用のディレクトリを作成し、作成したディレクトリ内で以下のコマンドを実行し、仮想環境を構築します。
$ pyenv virtualenv 3.7.3 test //3.7.3:Pythonのバージョン
//test:環境名
$ pyenv local test
$ activate test
(test)$ //左記のように作成した(作成した環境名)が表示されればOKです。
(test)$ pyenv versions //Pythonのバージョンを確認
system
3.7.3
*test
これで、このディレクトリではtest(3.7.3)が適応されます。
pyenv global test
でも問題ありませんが、今回はディレクトリ毎で環境を切りたいので、local
を使用しています。global
を使用すると、全ての環境で指定したバージョンが適応されます。
ここまでで、Pythonで開発するための環境構築が完了しました。次回の記事では、実際に機械学習で使用する各種モジュールのインストールから、簡単な実装までを書く予定です。