pythonのプロジェクトごとにパッケージを管理する
動機
Pythonをお仕事でも使うことになり、自分の環境だけでなく、他の環境でもすぐ動くようにする必要が出てきたので、pyenv-vertualenvを利用して環境構築をしました。その際の覚え書きです。
まずはインストール(Mac)
Homebrewを使って、pyenvとpyenv-virtualenvをインストールします。
$ brew install pyenv $ brew install pyenv-virtualenv
必要なpythonのバージョンをインストール
まずはpyenvでインストールできるPythonのバージョンを確認してみます。
$ pyenv install --list
先ほどの一覧からインストールしたいバージョンを選びインストールを行います。今回は3.6.5をインストールすることにしました。
$ pyenv install 3.6.5
インストールができたら、実際にpyenvに入ったかどうか確認します。
$ pyenv versions
ディレクトリにpythonの仮想環境を作る
これからpythonの開発を行おうとしているディレクトリに移動し、そのディレクトリで利用するpythonのversionを指定します。
$ cd projectのディレクトリ $ pyenv local 3.6.5 #指定できたことの確認 $ python --version Python 3.6.5
pythonの環境を現在のディレクトリ配下のvenv(2つ目のvenvがディレクトリ指定になっています)に作成します。
$ python -m venv venv --copies
現在のディレクトリにて先ほど作成した環境を適用する。
$ source venv/bin/activate # 上記コマンド実行の結果、下記のようにvenvが現れれば成功です。 (venv) $
パッケージの管理
パッケージ管理に必要なツールのインストールを行います。
$ pip install pip-tools
requirements.inに利用しようと思っているパッケージを記入します。
Django
requirements.inに書かれたパッケージと依存関係のあるパッケージをrequirements.txtに書き出します。
(venv) $ pip-compile requirements.in
# # This file is autogenerated by pip-compile # To update, run: # # pip-compile --output-file requirements.txt requirements.in # django==2.1.2 pytz==2018.5 # via django
djangoと依存関係があるらしいpytzも記入してくれました。
最後に書き出したパッケージのインストールを行います。
(venv) $ pip-sync
思ったこと
自分のPCでプロジェクトディレクトリにpythonコピーして、最終的にpip-syncをしたら、Uninstallが恐ろしいほど出てきました。今までこれだけのパッケージを統一的に扱っていたと思うと恐怖でしかありません。。