Closed7

【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
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として指定してあげることで環境を再現できる。

このスクラップは2023/01/22にクローズされました