pythonの環境構築とやらをしてみた

macbookproでpythonの環境構築をした


環境構築とそれに必要な知識について調べ、実行した
↓めちゃくちゃ参考にさせていただいた記事。
同じ手順でインストール等行い、私に足りない知識を自分の言葉で埋めてみた。
karaage.hatenadiary.jp

環境

MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
macOS High Sierra version 10.13.4

.bash_profileと.bashrcの設定

何のためにやるのか?
シェルを起動すれば自動的にpyenvとpyenv-virtualenv(後述)が使えるようにする

.bash_profile

ログイン時(ターミナル.app起動時)に実行される。
環境変数を設定することが多い、自分好みの環境にカスタマイズ可能

環境変数

OSのもつ様々な変数(ユーザ名、path、カレントディレクトリなど)


今回はbash_profileに.bashrcを読み込むように設定

#.bash_profileを新規作成  
$ touch ~/.bash_profile
#bash_profileを編集
$ vi ~/.bash_profile
#.bashrcを読み込むよう書き換え 
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi


.bashrc

シェルにbashと叩くことで読み込まれる設定ファイル。
.bash_profileに.bashrcを読み込むプログラムを加えることで、 シェルを起動するだけで.bashrcを読み込むことができる

bash

シェルの一種

シェル

人間が出した命令をOSの中核を担うカーネルに届けてくれる中継役
.bashrcにはエイリアスやpathやプログラムを設定できる。

エイリアス

別名の意味、コマンドを省略することができる。
例えば、ファイルの詳細情報を表示する下記コマンドがある。

ls -l

エイリアスを設定することで、

ll

に省略できる。
qiita.com
linuxfan.info
gabekore.org

今回は.bashrcを新規作成するだけ。後ほどpyenv等を使えるように中身を書き換える

#.bashrcを新規作成 
$ touch ~/.bashrc

homebrewをインストール

何のためにやるのか
pyenvとpyenv-virtualenvをインストールするため

homebrewとは

MacOSのパッケージ管理システム
ターミナルでソフトウェアの管理が容易に行える
brew.sh

公式サイトにもあるが、シェルで以下を実行してhomebrewをインストール

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

pyenvをインストール

何のためにやるのか
pythonをバージョンごとに管理するため
pyenv-virtualenvを使うため

pyenv

pythonをバージョン毎に切り替えて使用できる
同じバージョンで異なる環境を構築することは不可
※pyenv-virtuelenvを使うことで、同じバージョンでも異なる環境構築が可能になる。

# pyenvをインストール
$ brew install pyenv

anaconda3のインストール


pythonを便利に使うために

anaconda

Continuum Analytics社が提供している。
データサイエンティストに用いるライブラリを一括でインストール可能なpythonパッケージ
評判は色々あるが、何かと便利らしいので入れることにした。

#インストール可能なパッケージリストの表示する
$ pyenv install -l

python3系のanacondaをインストール

#anaconda3をインストール
$ pyenv install anaconda3-5.1.0

現在の環境一覧

$ pyenv versions

今の私の環境では以下の通り表示される
(ml,testは試しに作ってみた仮想環境)

  system
* anaconda3-5.1.0 (set by /Users/○○○/.pyenv/version)
  anaconda3-5.1.0/envs/ml
  anaconda3-5.1.0/envs/test

pyenv-virtualenvをインストール

何のためにやるのか
同じバージョンで違う環境を構築するため

pyenv-virtualenv

pyenvのプラグイン
pyenvのみでは同じバージョンで異なる環境の構築はできないがそれを可能にする。

# pyenv-virtualenvをインストール
$ brew install pyenv-virtualenv
# .bashrcに以下を追加
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ echo export PYENV_VIRTUALENV_DISABLE_PROMPT=1 >> ~/.bashrc
$ source ~/.bashrc


condaで仮想環境を構築する

何のためにやるのか
仮想環境を構築するため
元々の環境を汚さずにpythonで遊べるようにするため
pyenv-virtualenvのコマンドで仮想環境を構築するとうまくいかないらしい
condaで構築すればpyenv-virtualenvともうまく連携するとのこと

conda

anacondaやminicodaをインストールすることでついてくるpythonのパッケージ管理システム

# python仮想環境を構築
$ conda create -n test python #ライブラリが入っていないpython環境が構築
$ conda create -n test1 anaconda #anacondaが入ったpython環境が構築 
# 今回はtestのみ作成
# 以下のようにおケツにパッケージを入れることで構築時に同時にインストールしてくれる
$ conda create -n test2 anaconda tweepy PIL
$ pyenv versions
↓
  system
* anaconda3-5.1.0 (set by /Users/○○○/.pyenv/version)
  anaconda3-5.1.0/envs/ml
  anaconda3-5.1.0/envs/test

以下を実行することで作成した仮想環境に移ることができる

$ pyenv global anaconda3-5.1.0/envs/ml

うまく仮想環境が構築できているか確認する方法
先ほど作成したtest2に移動してpythonの対話型シェルを起動し、
import tweepyが成功すればOK。
更に念押しで、元々の環境(anaconda3-5.1.0 (set by /Users/○○○/.pyenv/version))に戻ってきてpythonでimport tweepyをしてErrorが発生すればOK。元々の環境は汚されていないことが分かる。

# パッケージを追加
$ conda install ○○○ #パッケージのインストール
$ pip install ○○○ #condaにないパッケージはpipで


これで

$ pyenv global 作成した仮想環境

で環境を行き来することが可能になった。
とりあえずここまで