あんちょこ》venvで仮想環境構築 から終了まで
venv で仮想環境を作るとき、よくつかう操作のあんちょこ。
venv の使いどころ
venvとは、Python仮想環境を作成するツール。
そのプロジェクト専用に、隔離され、独自のパッケージ構成のPython実行環境を用意したい場合に使う。
AWS Lambdaで Boto3以外のライブラリ依存がある関数を使う場合にも、仮想環境で開発してデプロイパッケージを作成する。
ref.》 Python の AWS Lambda デプロイパッケージ > 仮想環境がある場合 - AWS Lambda
venvで仮想環境構築、終了のしかた
【注意】
記載のコマンドは、MacOS環境で、かつ pyenvでpythonのバージョンを管理しており、
$ python ほにゃらら
で 3系のpythonが起動する前提です。他の環境では微妙に異なるかもしれない。
自分専用の あんちょこ なのであしからず。
新しい仮想環境を作成
$ cd [project dir] $ python -m venv [仮想環境名]
仮想環境名でディレクトリが生成される。
例えば仮想環境名を venv20190914 にした場合、
venv20190914/ 配下はこんな感じ:
$ ls -la venv20190914 total 8 drwxr-xr-x 6 acokikoy staff 192 9 14 12:11 . drwxr-xr-x 5 acokikoy staff 160 9 14 12:11 .. drwxr-xr-x 12 acokikoy staff 384 9 14 12:11 bin drwxr-xr-x 2 acokikoy staff 64 9 14 12:10 include drwxr-xr-x 3 acokikoy staff 96 9 14 12:11 lib -rw-r--r-- 1 acokikoy staff 102 9 14 12:10 pyvenv.cfg
pyenvが入っているからか、pyenv.cfgができてる。
venv20190914/pyvenv.cfgの中身はこんな感じ:
$ cat venv20190914/pyvenv.cfg home = /Users/acokikoy/.pyenv/versions/3.7.4/bin include-system-site-packages = false version = 3.7.4
activate(有効化)
$ source venv20190914/bin/activate (venv20190914)$
環境変数($PATH)が更新され、仮想環境が有効になる。
プロンプトが環境名付きに変わる。
仮想環境にパッケージをインストール
activateした状態で、pip installすると仮想環境にインストールされる。
# パッケージをインストール (venv20190914)$ pip install flask
flask や jinja2 が venv20190914/lib/python3.7/site-packages 配下にインストールされた。
インストール済みパッケージを一覧
(venv20190914)$ pip freeze Click==7.0 Flask==1.1.1 itsdangerous==1.1.0 Jinja2==2.10.1 MarkupSafe==1.1.1 Werkzeug==0.15.6
仮想環境のパッケージ情報を書き出して共有
パッケージ情報を requirements.txtファイルに書き出す。
(venv20190914)$ pip freeze > requirements.txt
別の場所に、pip install で同じ環境を作る。
引用元》 https://bootcamp-text.readthedocs.io/textbook/6_venv.html
プロジェクトの他のメンバーは、ソースコードをダウンロードした後、以下の手順で仮想環境に 同じパッケージをインストールします。このようにして、同一の環境をプロジェクトメンバー 全体で共有します。
$ git clone some-project-source-code $ cd some-project $ python -m venv env $ source env/bin/activate (env) $ pip install -r requirements.txt Collecting certifi==2017.4.17 (from -r hoge.txt (line 1)) Using cached certifi-2017.4.17-py2.py3-none-any.whl (中略) Installing collected packages: certifi, chardet, idna, urllib3, requests Successfully installed certifi-2017.4.17 chardet-3.0.4 idna-2.5 requests-2.18.1 urllib3-1.21.1 (env) $
deactivate(無効化)
仮想環境を抜ける。
$ deactivate