Pythonのプロジェクトは、その環境そのものと言えます。そのため、システムにpipでパッケージをインストールしていくと、移植するときに何が必要かわからなくなることがあります。そこで、Python標準で用意されているvenvとpipを使って、仮想環境を作成しましょう。
venvとは
venvはPython標準の仮想環境です。Pythonには他にもVirtualenvやpyenvなどがありますが、venvは公式が推奨しているため、最も手軽に仮想環境を管理する方法の一つと言えます。
仮想環境の構築
まずは適当にプロジェクトのディレクトリを作ります。ここでは project1
とでもしておきましょう。次に project1
へ入り、次のコマンドを実行します。
python -m venv test_env
ここで test_env
は好きな名前にすることができます。うまくいくと project1/test_env
というディレクトリができます。
仮想環境に入る
このとき仮想環境は作られるが、まだ有効になっていないので有効化する必要があります。シェルセッションを立ち上げて最初は必ず入る必要があります。test_env
の中にある Script
に仮想環境を有効化するコードがあります。
# bash
Scripts/activate
# windows(コマンドプロンプト)
.\\Scripts\\activate.bat
# windows(Powershell)
.\\Scripts\\Activate.ps1
うまく有効化されると、プロンプトが下記のようになります。
(test_env) user@host:/path/to/project1 $
環境をいじっていく
といってもpipが使えます。pipでガシガシ入れていきましょう。たとえばtensorflowの1.13.1を入れてみましょう。
pip install tensorflow==1.13.1
そのあと、 pip list
してみると、インストールされたライブラリが表示されます。
仮想環境から出る
シェルに応じて、Scripts
以下のdeactivate
という名前のスクリプトを実行します。Powershellの場合、単に「deactivate」と唱えるだけでよいです。
環境を移植する
ここから、仮想環境の真骨頂である移植に入ります。
requirements.txtの作成
移植元の環境で次のコマンドを唱えます。
pip freeze > requirements.txt
requirements.txtからインストール
新しい環境へrequirements.txt
をコピーします。そしてpipで次を唱えます。
pip install -r requirements.txt
すると、pip freeze
で出力されたライブラリがすべてインストールされ、移植は完了します。
まとめ
venvを使えば、requirements.txt
だけで移植できる環境を作ることができます。これにより、Pythonのプロジェクトを効率的に管理し、移植することが容易になります。.