【Python】仮想環境を作って管理しよう(venv)
目次
どうも、システムソリューション部のinusukiです。
今回はPythonのvenvを利用して仮想環境を作成していきます。
venvって何?
venv はバージョン3.3で追加されたベースPython上に軽量のPython仮想環境を作成するためのモジュールです。
仮想環境を用いることにより、Pythonパッケージのインストールをシステム全体ではなく、プロジェクト単位で行うことができます。
そのため、プロジェクトごとに異なるバージョンやパッケージを使用したり、依存関係による影響を考慮する必要なく、他のプロジェクトを立ち上げたりすることが可能です。
バージョン3.5以降の仮想環境の作成には、 venv の使用が推奨されています。(2023/08 時点)
実際に作ってみる
それでは実際に試してみましょう。
バージョン3.3以降であれば、標準機能としてあるので、追加のインストールは不要です。
今回はWindowsでPython 3.11.0を利用しています。
python -V Python 3.11.0
仮想環境の作成
便宜上、test_dirという名前でディレクトリを作成し、その中に仮想環境を作成します。
なお、venv作成時のコマンド(python -m venv)はLinuxでも同じです。
仮想環境の管理を円滑にするためにmyenv1という名前で作成します。
mkdir test_dir cd test_dir python -m venv myenv1
見やすくするために一部の列を非表示にしていますが、venvの中身は以下の通りです。
今回は利用方法に留まるため、詳細を割愛しますが、仮想環境を構成する上で重要なディレクトリ/ファイルですので、安易に変更を加えないようにしましょう。
ls myenv1 ディレクトリ: C:\Users\ichik\test_dir\myenv1 Mode LastWriteTime Name ---- ------------- ---- d----- 2023/08/28 13:30 Include d----- 2023/08/28 13:30 Lib d----- 2023/08/28 13:30 Scripts -a---- 2023/08/28 13:30 pyvenv.cfg
仮想環境の有効化
以下コマンドで仮想環境を有効化します。
実行後、プロンプトの先頭に環境名が表示されていれば、正常に有効化できています。
.\myenv1\Scripts\Activate.ps1 (myenv1) PS C:\Users\ichik\test_dir>
※実行環境によってコマンドが異なりますので、以下の表を参照してください。
プラットフォーム | シェル | 仮想環境を有効化するためのコマンド |
---|---|---|
POSIX | bash/zsh | $ source <venv>/bin/activate |
fish | $ source <venv>/bin/activate.fish |
|
csh/tcsh | $ source <venv>/bin/activate.csh |
|
PowerShell | $ <venv>/bin/Activate.ps1 |
|
Windows | cmd.exe | C:\> <venv>\Scripts\activate.bat |
PowerShell | PS C:\> <venv>\Scripts\Activate.ps1 |
環境名が表示されている間はベースのPythonではなく、仮想環境のPythonが実行されます。
なお、標準でvenvを作成した場合の仮想環境のPythonバージョンとベースのPythonバージョンは同じです。
python -V Python 3.11.0
先述の通り、仮想環境上のパッケージは独立したものとなりますので、あとは好きにインストールしていくだけで利用できます。
仮想環境の非有効化
以下コマンドで仮想環境を非有効化します。
(myenv1) PS C:\Users\ichik\test_dir> deactivate
仮想環境自体が不要になった場合はディレクトリごと削除しても問題ありません。
ex ) 仮想環境をコピーして使いまわしたい
例えば、違うPCで利用したり、他の人に共有して開発したりというような場合、venv自体をコピーして使いまわすといったことはしません。
パッケージの一覧を作成して、ソースコードともにgitなどで共有するようにしましょう。
以下のコマンドでパッケージの一覧を出力できます。
(myenv1) PS C:\Users\ichik\test_dir> python -m pip freeze > requirements.txt
あとは新たに立ち上げた仮想環境で以下のコマンドを実行し、パッケージを一括でインストールしていきます。
(myenv1) PS C:\Users\ichik\test_dir> python -m pip install -r requirements.txt
ex2 ) 仮想環境を異なるバージョンで起動したい(windows)
任意のバージョンをインストールすることで別のバージョンで仮想環境を立ち上げることも可能です。
まずはインストール済みのバージョンを確認します。
py --list -V:3.11 * Python 3.11 (64-bit) -V:3.9 Python 3.9 (64-bit)
今回はPython 3.9を利用して新たに立ち上げます。
py -3.9 -m venv pyenv39 .\pyenv39\Scripts\Activate.ps1
ベースとは異なるバージョンで仮想環境が立ち上がりました!
(pyenv39) PS C:\Users\ichik\test_dir> python -V Python 3.9.13
あとはここにソースコードとrequirements.txtを参照してpip installを行うことで別のバージョンでプログラムを実行することができますね。
まとめ
- venvはバージョン3.3で追加されたベースPython上に軽量のPython仮想環境を作成するためのモジュール
- プロジェクトごとに異なるバージョンやパッケージを使用することができる
- 依存関係による影響を考慮する必要なく、他のプロジェクトを立ち上げたりすることが可能
ご閲覧ありがとうございました。