Pythonで実際の開発する場合、以下のようなことをしたいと考えるでしょう。
- プロジェクト毎にパッケージを管理したい
- プロジェクト毎にPythonのバージョンを指定したい
Pythonでは仮想環境という仕組みを使って、これを実現できます。
今回はPythonの仮想環境と、仮想環境を扱うvenvの基本的な使い方について解説します。
Pythonの仮想環境とは
Pythonの仮想環境とは、独立したPython環境のことです。
「独立した」とは、その仮想環境の中にインストールされたPythonインタープリタやパッケージが、他の仮想環境にインストールされたものから隔離されている、ということです。
さらに、仮想環境はシステム(OS)のPython環境にインストールされたパッケージからも隔離されています。
そのため仮想環境を使うことで、プロジェクト毎にパッケージを管理したり、Pythonのバージョンを指定できるようになります。
仮想環境を使うには、Pythonに標準でインストールされているvenvを利用します。
venvの基本的な使い方
venvは標準ライブラリに含まれるモジュール*1なので、Pythonをインストールすればすぐに使えます。
仮想環境の作成
まずは、venvを使って仮想環境を作成します。作成方法は、コマンドプロンプト(Windowsの場合)やターミナル(macOSの場合)で以下のようなコマンドを実行します。
python -m venv <仮想環境のパス>
macOSなどの場合は、python
コマンドではなくpython3
コマンドです(python
だとPython 2.7が使われる可能性があります)。
python3 -m venv <仮想環境のパス>
-m venv
でvenvモジュールを、<仮想環境のパス>
でvenvモジュールに渡す引数を指定しています。
<仮想環境のパス>
は任意ですが、venv
やenv
などが使われることが多いです。ここではsample-venv
とし、任意の空ディレクトリ下で実行してみます。
python3 -v venv sample-venv
すると、sample-venv
というディレクトリ(フォルダ)が作成されます。なお、このディレクトリの名前は、仮想環境の作成時に指定した<仮想環境のパス>
になります。
このディレクトリの内容を、少し確認してみましょう。内容は環境によって多少異なります。
sample-venv/ ├── bin/ ├── include/ ├── lib/ └── pyvenv.cfg
このように、仮想環境の実体はPython実行ファイルなど幾つかのファイルを含んだディレクトリです。
便利なオプション
仮想環境を作成すると、仮想環境にはpip
などがインストールされた状態になっていますが、バージョンが古いことがあります。
仮想環境を有効化後、以下のコマンドでpip
を最新化できますが、少々面倒です。
pip install --upgrade pip
これについて、Python 3.9からは--upgrade-deps
というオプションが追加されました。
このオプションをつけて仮想環境を作成すると、pip
などが最新化された状態で仮想環境が作成されます。
python -m venv --upgrade-dep <仮想環境のパス>
仮想環境の有効化
仮想環境を作成しただけでは、まだ仮想環境を利用している状態にはなっていません。
作成した仮想環境を使うには、仮想環境を有効化する必要があります。
環境やお使いのシェルによって、実行するスクリプトが異なります。
sample-venv¥Scripts¥activate.bat
source sample-venv/bin/activate
上記のsample-venv
の部分はそれぞれの<仮想環境のパス>
で置き換えてください。
以降はmacOSを使って解説します。
仮想環境が有効化されると、以下のように、プロンプトに利用中の仮想環境がつきます((sample-venv)
の部分です)。
$ source sample-venv/bin/activate (sample-venv) $
ためしにpython
コマンドのバージョンやパスを確認すると、仮想環境の有効化後は仮想環境内のpython
が使われるようになっています。
# 仮想環境が有効な状態 (sample-venv) $ python -V Python 3.10.6 (sample-venv) $ which python /Users/testuser/venv-sample/venv/bin/python
# 仮想環境が無効な状態 $ python -V Python 2.7.13 $ which python /usr/local/bin/python
注意点
仮想環境を有効化しても、それはそのコマンドプロントやターミナルに限られます。システム全体のPython環境が仮想環境になるわけではありません。
そのため、新たにコマンドプロントやターミナルを立ち上げた場合、その中では仮想環境は有効になっていません。
複数のコマンドプロントやターミナルで仮想環境を使いたい場合は、それぞれの中で有効化する必要があります。
仮想環境の無効化
仮想環境の利用を停止する場合は、仮想環境を無効化します。
無効化するためのコマンドはdeactivate
です。
このコマンドは仮想環境を有効化した時に、利用できるようになっています。
(sample-venv) $ deactivate $
プロンプトに付いていた(sample-venv)
が無くなりました。これで仮想環境が無効化されたことになります。
仮想環境の削除
仮想環境を削除するには、仮想環境のディレクトリを削除するだけで大丈夫です。
特別なコマンドなどはありません。
仮想環境ごとにPythonのバージョンを分ける方法
仮想環境におけるPythonのバージョンは、仮想環境の作成に使用したPythonのバージョンになります。
そのため、たとえばPython 3.9で仮想環境を作成したら、仮想環境のPythonのバージョンも3.9になります。
試しにPython 3.9で仮想環境を作成し、有効化してみます。macOSではpython3.9
のようにバージョンを付けたコマンドが実行できます。*2
$ python3.9 -m venv venv39
Windowsの場合は、インストールしたPythonのフルパスを指定します。*3
>C:\Users\testuser\AppData\Local\Programs\Python\Python39\python -m venv venv
仮想環境を有効化し、pythonのバージョンを確認してみます。
$ source venv39/bin/activate (venv39) $ python -V Python 3.9.12
先ほどの仮想環境(sample-venv
)はPython 3.10でしたが、今回の仮想環境(venv39
)はPython 3.9になっていることが確認できました。
このように、仮想環境ごとにPythonのバージョンを指定できます。
なお、パッケージ管理の方法については、また別の記事で解説したいと思います。
まとめ
- Pythonの仮想環境は、独立したPython環境
- 仮想環境を使うと、プロジェクトごとにパッケージ管理したり、Pythonのバージョンを指定できる
- 仮想環境の作成にはvenvを使う
- 仮想環境を使うには、仮想環境を有効化する必要がある