「コマンドライン for デザイナー」のお話も今回で最終回となりました。本日はPythonの開発環境を整えていきます。*1
- ターミナルって何?
- Homebrewって何?
- pyenvって何?
今回はpyenvについてご説明します。実際にPythonのバージョンをプロジェクトごとに切り替えてみましょう!
- pyenvとはなにか
- 異なったバージョンのPythonを切り替えるってどういうこと?
- pyenvをインストールしよう
- 環境変数を設定する
- コマンドの解説
- 実際に使ってみよう
- direnv、anyenvについて
- まとめ
- fish-shell盛り上げたい勢としての独り言
pyenvとはなにか
pyenvというのは異なったバージョンのPythonを簡単に切り替えることができるツールです。
pyenvと一緒に紹介されることが多いツールにvirtualenvというものがあるのですが、ぼくは
- pyenvを理解する
- virtualenvを理解する
の順に学んだほうが混乱が少ないと思いますのでここでは割愛します。
ちなみに本記事であつかうpyenvですが、本日現在Windowsには対応していません。
pyenvはシンプルで分かりやすいので初学者には一押しなのですが、WIndowsユーザはanaconda(miniconda)と言うものを使うと良いでしょう。*2
異なったバージョンのPythonを切り替えるってどういうこと?
実はMacには初期状態からPython2系がインストールされており、ターミナルを起動しておもむろに下記コマンドを実行するとシステムに入っているPythonのバージョンが表示されます。
$ python --version
Pythonが元から入っているなんてなんてフレンドリー!このまま使い続けよう!と言ってもいいんですが、例えばBlenderのスクリプトを書こうと思ったときはどうしましょう。執筆時現在Blenderはバージョン2.78で、Pythonのバージョンは3.5.1に対応しています。
ここからPython3系のパッケージをダウンローしてきてインストールしても良いですが、2系と3系を行ったり来たり、2系の中でも2.6系と2.7系で開発したいなんてこともあるでしょう。
そんなとき、pyenvが大活躍するのです!
pyenvをインストールしよう
そういえば様々なパッケージを一元管理するツールがあるとどこかで聞きました。
そう、Homebrewです!
Homebrewはインストール済みという前提でpyenvをインストールしてみましょう。と言っても下記1行のコマンドです。*3
$ brew install pyenv
インストールはこれで完了!簡単ですね。ただ、ここからひとつだけ山場があります。ちょっとだけ難しいですが頑張りましょう。
環境変数を設定する
はい出ました環境変数。難しそうなやつです。慣れないと間違って書き込んじゃったらコンピューターが壊れちゃうんじゃないの…と心配になっちゃうやつです。
ご心配無用。全然難しくないですし、失敗してもすぐ直せます。
非常にざっくりと説明すると「コンピュータにコマンドのある場所を教えてあげること」を「環境変数を設定する」と言います。また全く同じ意味でパスを通すという言い方もあるので合わせて覚えておきましょう。
以下にbash/zsh、fishユーザー向けに設定を書いておきます。
bashユーザー
pyenvに関するパスの通し方は下記コマンド一発です。
$ export PATH="$HOME/.pyenv/bin:$PATH"
上記コマンドを実行したあと、続けて以下を事項するとpyenvが初期化され使えるようになります。
eval "$(pyenv init -)"
この2行を実行してあげれば使えるようになるのですが、毎回実行するのはめんどくさい。ターミナルを立ち上げた時(ログインした時)に使える状態になっていたら楽ですよね。
そこで、bashユーザーなら下記2行を.bash_profile
または.bashrc
のどちらかに書き込みましょう。*4
export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)"
.bashrc
や.bash_profile
の保存場所はホームディレクトリ直下です。
ホームディレクトリとは~
と表現され、/Users/ユーザ名
のことを指します
Macはドットで始まるファイルは不可視ファイルとなるため、書き込み・読み込みの際は注意しましょう。
zshユーザー
パスの通し方と初期化についてはbashと同じコマンドでOKです。書き込む設定ファイルだけ異なりますのでご注意ください。
export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)"
上記を.zshrc
に記載しましょう。保存場所はホームディレクトリ直下です。
fishユーザー
fishは記述がかなり異なりますね。
status --is-interactive; and . (pyenv init -| psub) set -x PATH $HOME/.pyenv/shims $PATH
こちらを~/.config/fish/config.fish
に記載しましょう。
コマンドの解説
環境変数の設定、ちょっとややこしかったですね。まあファイルに書き込む作業自体は一回だけなので大変なのは最初だけです。以下にpyenvの使い方を説明します。
最初にさらっとよく使うコマンドを説明し、続けて実際の使用例を説明しましょう。
インストールできるバージョンの一覧を表示
$ pyenv install -l
実行するとズラッと出てきますね。この中から好きなものをインストールしましょう。
特定のバージョンをインストール
$ pyenv install 3.5.2
例として3.5.2をインストールしてみました。簡単ですね。
現在インストール済みのバージョン一覧を表示する
$ pyenv versions
実行してみると下記のような表示になるかと思います。
system * 2.7.10 (set by /Users/ユーザー名/.pyenv/version) 3.4.3 anaconda3-2.4.0
現在使用しているバージョンに*
マークが表示されています。
現在使用しているバージョンのみ表示
$ pyenv version
標準出力はお察しの通りこんな感じになります。
2.7.10 (set by /Users/ユーザー名/.pyenv/version)
デフォルトで使用するバージョンを指定する
$ pyenv global 2.7.10
上記コマンドを入力することで、デフォルトで使用するバージョンを2.7.10に指定することができます。
ちなみにあとで実例をお見せしますが、local
オプションを使うとデフォルトよりそのバージョンが優先されます。
実際に使ってみよう
デスクトップに3dapp_scripts
というディレクトリを作り、blender_projectディレクトリ
では3.5.1を、maya_projectディレクトリ
では2.7.11を使用するように環境を整えてみましょう!
MayaとBlenderを想定しましたが、3DCGと関係がないクラスタの方は単純にバージョンを切り替える例としてご覧ください
3dapp_scripts ├── blender_project └── maya_project
ふたつのバージョンのインストール
$ pyenv install 2.7.11
$ pyenv install 3.5.1
上記ふたつのコマンドを実行しましょう。現状ぼくの環境ではこのような感じになりました。
$ pyenv versions system * 2.7.10 (set by /Users/ユーザー名/.pyenv/version) 2.7.11 3.4.3 3.5.1 anaconda3-2.4.0
すでにインストールされていた余分なやつもいますが、2.7.11と3.5.1がいればOKです。
maya_projectでバージョンの設定を行う
デフォルト設定ではなくプロジェクト単位で設定を行うため、local
オプションを使用します。
$ cd ~/Desktop/3dapp_scripts/maya_project/
$ pyenv local 2.7.11
cd
コマンドは「カレントディレクトリ」を意味し、ディレクトリの移動をするコマンドです。maya_projectディレクトリ
に移動したあと、Pythonのバージョンを2.7.11に設定したということです。
blender_projectでバージョンの設定を行う
続けてBlenderのプロジェクト設定もしてみましょう。
$ cd ../blender_project/
$ pyenv local 3.5.1
ひとつ前の工程でmaya_projectにいたので、../blender_project
と相対パスを使って移動しました。
あとは先程の手順と変わりませんね。
バージョンが切り替わっているか実際に確かめてみる!
操作動画のとおりですが、cd
でディレクトリを移動するだけでPythonのバージョンが変わっているのがわかりますね!
本動画ではpython --version
でバージョン確認をしていますが、もちろんpyenv version
でもpyenv versions
でも確認を行うことができます。
バージョン切り替え、難しくなかったと思います。これで様々なバージョンを行き来して開発が可能になりました!
direnv、anyenvについて
Pythonの開発のみをしているのでよければpyenvで事足りるのですが、RubyのrbenvやPerlのplenv、Nodejsのnodebrewなど様々な環境をひとつのツールで切り替えたい場合はdirenvやanyenvというツールがHotらしいです。
ぼくは使ったことがありませんが、ご興味があれば調べてみてはいかがでしょうか。
まとめ
ターミナルに始まりHomebrew、pyenvと説明を行ってきました。
デザイナーやアーティストのみなさんが、あれ?おもったより難しくなさそうと思っていただければこれにまさる喜びはありません。
ぼくもデザイナーですが、黒い画面を使うようになってクリエイティブな時間が増えました。
単純作業や繰り返し作業はコンピュータに任せて、モノづくりの時間をもっと増やしていきましょう。
fish-shell盛り上げたい勢としての独り言
fish-shellはデフォルト設定のままでも十分現場投入できるシェルだと思うので、今後ブログにも引き続き書いていきたいと思っています。
現状シンタックスハイライトが対応していないためzsh
のハイライトを当てていますが、fish-shell
に対応してくれたらハッピーだなぁと思います。