5
5

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 2019-04-13

始めに

本記事は自己学習の結果を記事として残すためのものであり、自分と同じくこれから機械学習の勉強を始めようとしている方の、若干の手助けとなればと思い書いています。
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で開発するための環境構築が完了しました。次回の記事では、実際に機械学習で使用する各種モジュールのインストールから、簡単な実装までを書く予定です。

5
5
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
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?