Pythonで開発する前の基礎知識
by Soichi Saito
Pythonのバージョンについて
Pythonの実行環境としては大きく2つのバージョンが存在しています。 それぞれ2系とPython3系で別れており最新のバージョンはPython3系です。 特別な事情がない限りは、Python3系の最新のバージョンを使用するのが良いと思います。
環境構築について
Pythonの環境構築するために最低限必要なものとしては、pyenvを用意するのが良いかと思います。これは、rubyにおけるrbenvのようなものでpyenvを通して必要なバージョンをマシンにインストールし適宜切り替えることが可能なツールです。
まずは、homebrew経由でpyenvをインストールします。
.bash_profileにpyenvのパスが通るようにします。
仮に、Pythonのバージョン2.7をインストールしたい場合は、pyenvのinstallコマンドを利用します。
pyenvで実行したいバージョンがインストールできたら、それをどの粒度で実行するかをpyenvに伝えます。実行粒度は以下のように3パターン存在します。
- system
- pyenvを経由してインストールしていない元々入っていたPythonを利用する場合
- global
- pyenv経由でインストールしたバージョンをdefaultとして利用する場合
- local
- pyenv経由でインストールしたバージョンをディレクトリごとに切り替えたい場合
先程インストールしたPython2.7はinstallしただけでは利用することはできず、例えば現在のディレクトリのみで実行したい場合は、以下のようにpyenv localコマンドを実行します。
実行すると、実行したディレクトリに.Python-versionというファイルが作成され指定したバージョンが記載されています。このファイルがあるディレクトリはファイルに記載されたバージョンがpyenvによって呼び出されることになります。このコマンドによって、ディレクトリ毎に違うバージョンで実行することが可能になります。
ライブラリ管理について
Pythonをインストールするとpipというrubyでいうところのgemのようなライブラリ管理ツールも同時にインストールされます。pipはPythonバージョンごとに独立しており、
というinstallコマンドでpipに登録されている3rdパーティのライブラリをインストールすることができます。
もしも、任意のライブラリの存在を確認したい場合は、
というような形でpipに登録されているか確認することが可能です。
ただ、複数人で開発していたり、CI上で適切なライブラリをインストールできるようにしたいという要望がでてくるとプロジェクト内で使用するライブラリを個別にpipでインストールしていくのは手間がかかります。
rubyではbundlerとGemfile, Gemfile.lockという仕組みでそのプロジェクト内のライブラリを一括管理してくれますが、Pythonにも同様の仕組みが存在しています。pipenvというライブラリがあるので、pip経由でインストールします。rubyの
に相当します。
pipenvがインストールできたらinstallコマンドでGemfile, Gemfile.lock相当のPipfile, Pipfile.lockを作成します。
Pipfileにライブラリを追記したい場合は、pipenvのinstallコマンドに追加したいライブラリ名を入れて実行します。
そうすると、Pipfile, Pipfile.lockが更新されます。ライブラリのバージョン指定などもできるのでプロジェクト内で必要なライブラリをpipenv経由でインストールすれば、複数人で開発する際やCIで環境を作りたい場合に同様の実行環境を簡単に構築することができます。
まとめ
以上で、Pythonで開発をするための最低限の環境が構築できるようになっているはずです。
pyenvはPython自体のバージョン管理で、pipenvはvirtualenvのwrapperなので、正確にはvirtualenvを使うことにはなるのですが、virtualenvの利用をrubyのbundler, Gemfile, Gemfile.lockっぽい感じでいい感じに管理することができます。
この辺とっかかりのときほんとにわかりにくいですよね。