Pythonお悩み解決

Pythonに関する疑問や悩みにこたえるブログです

仮想環境の使い方を知りたい(venvの基本)

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モジュールに渡す引数を指定しています。

<仮想環境のパス>は任意ですが、venvenvなどが使われることが多いです。ここでは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 <仮想環境のパス>

仮想環境の有効化

仮想環境を作成しただけでは、まだ仮想環境を利用している状態にはなっていません。

作成した仮想環境を使うには、仮想環境を有効化する必要があります。

環境やお使いのシェルによって、実行するスクリプトが異なります。

Windowsの場合(コマンドプロンプト

sample-venv¥Scripts¥activate.bat

macOS/Linuxの場合(bash/zsh

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を使う
  • 仮想環境を使うには、仮想環境を有効化する必要がある

参考

*1:Python 3.3から標準ライブラリに追加されました

*2:もちろん対応するPythonがインストールされている必要があります

*3:Microsoft Storeからインストールした場合は、python3.9などバージョン付きのコマンドが使えます