Pythonには仮想環境の作成や管理を行うvenvモジュールが標準で同梱されています。この記事ではvenvを使ってPythonの仮想環境を作成する方法や、仮想環境の管理方法を解説します。
仮想環境とは?
最初に仮想環境とは何か?というところからお話ししたいと思います(そんなことは知っている、という方は読み飛ばしていただいて構いません)。
仮想環境というと1つの物理マシン上で複数のOS(ゲストOS)を動かす技術を思い浮かべ、Pythonの仮想環境を作るのも何か難しくて大変なんじゃないかと思うかも知れませんが、そんなことはありません。とっても簡単です。
ここでいう環境とはプログラムの実行環境です。つまりプログラムを動かすときの環境です。したがってPythonの仮想環境とは、仮想的に作成されたPythonの実行環境のことを指します。
システムにPythonをインストールするとPythonの実行環境が1つ出来上がります。そして仮想環境を作成すると、ベースのPython実行環境とは別の(仮想的な)環境が作成されます。仮想環境は必要なだけいくつでも作成できます。
仮想環境は他からは隔離されているので、他の環境へ影響を与えずパッケージの追加や更新を自由に行うことができるので大変便利です。
仮想環境を作成するツール
仮想環境を作成・管理するためのツールはいくつかあります。ここでは代表的なツールを3つ紹介します。
- venv
-
この記事で説明するツールです。Pythonの標準ライブラリに含まれているので、すぐに使い始められます。標準ライブラリなので安心感もあります。
- virtualenv
-
サードバーティー製の仮想環境ツールです。利用するには別途インストールする必要があります。利用者も多く使いやすいツールだと思います。
- conda
-
Anacondaに付属している仮想環境ツールです。Anacondaをインストールしていればすぐに使い始められます。こちらも使いやすいと思います。
どれを選べば良いかという点に関しては、まずは悩むよりどれでもいいので使い始めるのが良いと思います。基本機能には大差がないので、要件や好みで選べばいいと思いますし、結局は使ってみないとわからないこともあります。
1つのツールで得た知識は、他のツールを使うときに役立つので決して無駄にはなりません。気楽に初めてみましょう。ここでは初めて仮想環境を使う方を対象としているので、インストールが不要なvenvを使います。
venvの使い方
ここからは実際のvenvの使い方を説明します。簡単ですので、実際にご自身の環境で試してみると良いでしょう。
仮想環境を作成する
仮想環境に必要なファイルはディレクトリに置かれます。そのため仮想環境を作成するには、仮想環境のディレクトリを作成する場所に移動してから次のコマンドを実行します。これはカレントディレクトリにmyenvという仮想環境のディレクトリを作成します。
$ python3 -m venv myenv
あるいは、絶対パスを指定してコマンドを実行します。
$ python3 -m venv /path/to/myenv
この場合、存在しない親(や祖先)ディレクトリがあれば、それも作成します。
この例で仮想環境の名前にmyenvと指定していますが、好きな名前で構いません。仮想環境のディレクトリにはPythonインタプリタやその他の必要なファイルが置かれます。
$ ls myenv/
bin include lib pyvenv.cfg
仮想環境を有効化する
仮想環境を利用するには、はじめに有効化する必要があります。
LinuxやMacOSなどでbashかzshシェルを使っている場合は、sourceコマンドで「 <仮想環境ディレクトリ>/bin/activate」スクリプトを実行します。
$ source myenv/bin/activate
activateはbashシェルスクリプトで書かれています。そのためシェルにcsh/tcshを使っている場合は、代わりに同じbinディレクトの中にあるactivate.cshを実行します。その他のシェルを使っている場合はドキュメントを参照して適切なシェルを実行してください。
仮想環境を複数作成している場合は、有効化したい仮想環境ディレクトリの「/bin/activate」を実行します。このように、いくつもの仮想環境を使い分けることができます。
Windowsの場合は、コマンドプロンプトから次のコマンドを実行します。
myenv\Scripts\activate.bat
仮想環境が有効化されると、プロンプトの先頭に仮想環境の名前が「()」に囲まれて表示されます。
(myenv) $
仮想環境を無効化する
仮想環境を無効化するには次のコマンドを実行するだけです。無効化するとプロンプトの先頭の仮想環境の名前が消えます。
(myenv) $ deactivate
仮想環境を削除する
仮想環境を削除するには、単に作成した仮想環境のディレクトリを削除するだけです。仮想環境は無効化してから削除しましょう。
(myenv) $ deactivate
$ rm -rf myenv/
仮想環境でPythonを実行する
仮想環境を有効化した状態でPythonプログラムを実行すると、プログラムは仮想環境の中で実行されます。したがって、いつものようにプログラムを実行するだけです。
(myenv) $ python3 foo.py
仮想環境にパッケージをインストールする
仮想環境にパッケージをインストールするのも、仮想環境を有効化した状態でpipコマンドを使うだけです。
(myenv) $ python3 -m pip install requests
パッケージは有効化した仮想環境にインストールされます。そのため他の仮想環境やペースのPython実行環境に影響を与えることはありません。
その他のパッケージ管理も、いつもと同じようにpipコマンドを実行するだけです。やり方も何も変わるところはありません。ここではpipコマンドの使い方をいくつかおさらいしましょう。
パッケージを削除するにはuninstallサブコマンドを使います。
(myenv) $ python3 -m pip uninstall requests
showサブコマンドは指定されたパッケージの情報を表示します。
(myenv) $ python3 -m pip show requests
仮想環境にインストールされたすべてのパッケージを表示するにはlistサブコマンドを使います。
(myenv) $ python3 -m pip list
仮想環境の配布
他のマシンでも同じ仮想環境を利用したい場合は「pip freeze」でパッケージ一覧を出力しファイルへ保存します。「pip freeze」は「pip install」が解釈できる形式で一覧を生成するので、保存したファイルを配布することができます。一般に、このファイルは「requirements.txt」という名前で作成します。
(myenv) $ python3 -m pip freeze > requirements.txt
新しい環境ではrequirements.txtを「pip install -r」で読み込み、パッケージをインストールします。
(myenv) $ python3 -m pip install -r requirements.txt
ヘルプの参照
venvのヘルプを参照するには -h をつけて実行します。
$ python3 -m venv -h
仮想環境のアップデートやコピーなど、venvで他に出来ることが分かりますので、一度参照してみてください。
おわりに
仮想環境を使えば、ペースのPython環境を汚さずにパッケージ追加できるようになります。気になるパッケージをお試しする時などにも便利ですので、ぜひ活用してください。