venvによる仮想環境作成

Pythonの仮想環境とは

Pythonプログラムを作成する際、pipなどでモジュールをインストールすることになると思いますが、一つの環境で別のPythonプログラムを作成しようとすると、以前にインストールしたモジュールが不要になったり異なる競合したりしてしまいます。

こういったことを避けるため、通常、Pythonに限らずプログラムやプロジェクトごとに仮想的な環境を作成することが近年一般的になっています。

例えばAとBと2つの仮想環境を構築したとします。

仮想環境Aでは古いバージョンのモジュールを、仮想環境Bでは新しいバージョンのモジュールを別々にインストールすることが可能です。

また、新たにソフトウェアを作成する度に新たに環境を作成することができます。

こういった仮想環境を構築するために、Unix系ユーザーはpyenv + virtualenvが使えますが、それ以外にもPython3にはデフォルトでvenvという仮想環境作成モジュールが利用可能です。

Python3にデフォルトで付属しているモジュールですので、Windowsユーザーでも利用可能です。(ただし、pyenvのようにバージョン毎に環境を作成することができるわけではありませんので注意してください。)

venvによる仮想環境の作成

以下のコマンドで仮想環境を作成することができます。

python -m venv 環境構築先のパス

以下、Windowsユーザー向けに構築の一例を示します。

コマンドプロンプトを起動してc:\work\pywork\envsにprojectA、projectBという2つの環境を作成してみましょう。

cd c:\work\pywork\envs
python -m venv projectA
python -m venv projectB

c:\work\pywork\envs配下に2つフォルダが作成されました。

これで仮想環境の利用準備ができました。

仮想環境の切り替え

activate.bat 仮想環境の起動

仮想環境projectAを利用してみましょう。コマンドプロンプト上で以下のバッチを実行してみてください。

> projectA\Scripts\activate.bat
(projectA) > 

これで仮想環境projectAを起動した状態になります。先程の続きでpipで適当なモジュールをインストールしてみてください。

(projectA)> pip install flask
(projectA)> pip freeze
click==6.7
Flask==0.12.2
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
Werkzeug==0.14.1

インストール済のモジュールが表示されます。

deactivate.bat 仮想環境から抜ける

仮想環境を抜ける場合、deactivate.batを実行します。先程の続きで以下のコマンドを実行してください。

(projectA)> projectA\Scripts\deactivate.bat
> 

プロンプトの文字列が変わりました。次に、仮想環境projectBに切り替えてみましょう。

> projectB\Scripts\activate.bat
(projectB) > pip freeze

pip freezeで仮想環境projectBのインストール済モジュールを確認しても、何もインストールされていないきれいな環境であることが確認できます。

このように、venvを利用するとWindowsでもプロジェクト毎に仮想環境を簡単に構築することができます。

Unix系の場合

上の説明はWindows向けですが、Unix系でも同様に利用することが可能です。bashやzshの場合、バッチファイルの代わりに 仮想環境パス/bin/activateをsourceで実行してください。deactivateについても同様です。