【Python】venvを始める
What is venv
venvとは「virtualenv」を意味し、文字の通り仮想環境である。Pythonに標準で組み込まれており専用のライブラリをpip install
することなく使用できる。
venvを使用することでディレクトリごとに仮想環境として独立させることができる。Pythonの実行環境ごとに各ディレクトリ内に閉じ込められるため依存性の解決がしやすくなるメリットがある。
venvを使う際の一連のフローについて基本的な使い方をメモしていく。
仮想環境作成
執筆スクラップ内ではPython 3.10.9で実行している。
仮想環境にしたいプロジェクトディレクトリへ移動し以下のコマンドを実行する。
# プロジェクトディレクトリへ移動
$ cd <project-path>
# 仮想環境作成
$ python3 -m venv .venv
上記<project-path>
仮想環境を作成するPathに読み替えて実行する。
コマンドの実行後、以下の.venvディレクトリが生成されることを確認する。
.venvディレクトリ内には以下のディレクトリが含まれている。
- bin
- include
- lib
- pyvenv.cfg
仮想環境へ入る
作成しただけだと仮想環境へは入れていないためコマンドで仮想環境へ入る必要がある。
以下のコマンドで作成した仮想環境へ入る。
$ source .venv/bin/activate
Zsh or Bash を利用している場合は上記のコマンドで環境へ入れるが、シェルにより実行するコマンドが異なるため詳しくは以下を参照。
仮想環境から抜ける
仮想環境から抜ける場合は以下のコマンドを実行する。
$ deactivate
とてもシンプル。
仮想環境内でパッケージをインストールする
仮想環境のあるディレクトリへ移動して仮想環境に入る。
# 仮想環境へ入る
$ source .venv/bin/activate
現在インストールされているモジュールを確認する。
# 初期段階では pip とsetuptools のみ入っている
$ pip list
Package Version
---------- -------
pip 22.3.1
setuptools 65.6.3
必要なモジュールをpip
でインストールする。
$ pip install pandas numpy requests
Successfully installed ...
となったらインストールされたものを確認してみる。
Package Version
------------------ ---------
certifi 2022.12.7
charset-normalizer 3.0.1
idna 3.4
numpy 1.24.1
pandas 1.5.3
pip 22.3.1
python-dateutil 2.8.2
pytz 2022.7.1
requests 2.28.2
setuptools 65.6.3
six 1.16.0
urllib3 1.26.14
pandas・numpy・requestsの依存関係に基づいてモジュールがインストールされたことが分かる。
仮想環境を抜けて仮想環境内でインストールが完結しているか確認する。
$ deactivate
仮想環境の中のみに先程インストールしたモジュールが存在し仮想環境と隔離されていることを確認する。
仮想環境の構成を他の環境で再現する
venvは直接関係ないが依存関係は通常のPythonプロジェクトと同じくpip freeze
の結果をrequirements.txtにリダイレクトして他の環境で再現可能。
$ pip freeze > ./requirements.txt
certifi==2022.12.7
charset-normalizer==3.0.1
idna==3.4
numpy==1.24.1
pandas==1.5.3
python-dateutil==2.8.2
pytz==2022.7.1
requests==2.28.2
six==1.16.0
urllib3==1.26.14
作成されたrequirements.txtを他の環境でpip install -r requirements.txt
として指定してあげることで環境を再現できる。