pythonでの環境構築の手順をまとめます。
追記:python3をメインに環境構築についてシンプルに書きなおしました。
pythonの開発環境構築には、いろいろな意見や古い記事も混在していて迷うところなのですが、できるだけシンプルにハマりの少ない方法について考えてみました。
python3をメインに考えています。python2でも基本的な考えは同じですがvenvやらを別途準備する点が面倒になってくると思います。
まとめると
- 安全にpython3をインストールする
- venvを使用してプロジェクト用のpython環境を作る
です。
安全にpython3をインストールする
python3を安全に楽にインストールするには公式 python.org から自分のプラットフォーム向けバイナリを入手するのが確実です。
https://www.python.org/downloads
WindowsとMacはこの方法が可能です。Linux環境(もしくはWindowsでもWSL)の場合はソースコードしか配布されていませんが、各Linuxディストリビューションで提供されるパッケージ(aptなど)でビルド済みのバイナリが入手できます。それを使用しましょう。
「パッケージインストールでは個別のバージョン毎のランタイムが管理できない」という状況のときにpyenvやソースコードからのビルドを検討したら良いと思います。
pyenvの使用を書いてある記事も多いのですがイキナリそこから入るのはハマることが多いと思います。複数のバージョンのpythonランタイムを管理したい人が楽するためにpyenvを使うのは良いと思うのですが、「まずpython使って勉強したいんだ」という人はそんなこと気にせず公式バイナリをシステムにインストールしましょう。ランタイムをシステムにインストールしても開発プロジェクトごとにライブラリを管理することはできます(後述のvenv)。
venvを使用してプロジェクト用のpython環境を作る
pythonのインストールが完了したら、次は開発プロジェクトごとの環境を構築します。これはなぜ必要になるかというと、プロジェクトごとに依存ライブラリが違うからです。
あるプロジェクトAはライブラリXのバージョン2を使用し、別のプロジェクトBはライブラリXのバージョン3を使用する場合、ひとつのpython環境では用意するライブラリが競合してしまいます。
そのためシステムにインストールしたpython環境にはライブラリをインストールせずクリーンなままにしておきます。そして各プロジェクトごとにクリーンにpython環境を用意します。
開発プロジェクトのディレクトリで以下のコマンドを実行します。 myenvというのは作成する仮想環境の名前で任意の名称です。venvとか.venvなどが使用されます。
仮想環境作成
$ python3 -m venv myenv
これでmyenvというディレクトリが作成され、インストールしたpython3環境と同じものが構築されます。
Ubuntu Linux環境において、
The virtual environment was not created successfully because ensurepip is not
available. On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.
というメッセージが表示された場合は、venvが入っていないことが原因です。venvはpython3では標準インストールされているものなのですが、Debian/Ubuntuの場合は個別にインストールする必要があります。
$ sudo apt install python3-venv
という形でパッケージ版のpython3環境にvenvライブラリをインストール後、もういちどpython3 -m venv myenv
をつかって仮想環境を作成してください。
アクティブ化
あとはこのmyenv環境をアクティブにすることで、システムにインストールしたpythonとは分離された環境で自由にライブラリをインストールできます。
$ . myenv/bin/activate
(myenv) $ pip install flask
...
(Windowsの場合は、myenv/Scripts/activate.batになる)
myenv環境でpipを使ってライブラリをインストールできます。どこにインストールされるかというとmyenvディレクトリの中に入ります。このディレクトリをゴソっと削除すればなかったことになりますので自由に環境を汚して構いません。pythonコマンドはシステムのものではなく、myenv環境にあるpythonコマンドが使用されます。
アクティブ解除
(myenv) $ deactivate
このコマンドでアクティブにした仮想環境から出ます。pythonコマンドはシステムのものが使用されるようになり、先ほどインストールしたライブラリは使えなくなります。
インストールされた依存ライブラリを記録する
(myenv) $ pip freeze > requirements.txt
pip freezeでこのmyenv環境にインストールされているライブラリのバージョンを出力できます。このファイルをgitに登録し、myenvディレクトリはgitignoreにしておきます。環境を再現するときには、このrequirements.txtから復元します。
requirements.txtから環境を復元
(myenv) $ pip install -r requirements.txt
myenv環境を作りなおしたときなどには、requirements.txtから読み込んでインストールすることで、環境を再現できます。
Python2の場合は?
pipやvenvが標準でインストールされていないです。
pip
pipはpython2.7.9から標準となっているため、ない場合は別途インストールする必要があります。
Linuxであればpython-pipというパッケージが用意されているものもあります。その他の環境でもこちらを参考にget-pip.pyをダウンロードして実行することで最新のpipを導入できます。このツールはシステムにインストールしても構いません。
virtualenv
venvはpython3.4から標準となっているため、別途virtualenvというツールをインストールする必要があります。(python3のvenvはこれをベースに作られているのでほとんど同じです)
Linuxであればpython-virtualenvというパッケージが用意されているものもあります。pip を使ってvirtualenvをインストールすることもできます。システムのpythonにインストールするため管理者権限が必要になります。このツールはシステムにインストールしても構いません。
$ sudo pip install virtualenv
$ virtualenv myenv
$ . myenv/bin/activate
実はpython3のvenvよりもvirtualenvの方ができることが多くて、作成するpython環境の実行ファイルを指定して環境を作ることができるので、python2.7の環境、python3.5の環境、python3.6の環境などいろいろ混在して作りたい場合は、virtualenvを使って仮想環境を構築します。
参考サイト