5. その他のツールとスクリプト

5.1. pyvenv - 仮想環境の作成

pyvenv スクリプトを実行することで virtual environments を作成出来ます

pyvenv /path/to/new/virtual/environment

このコマンドを実行すると、対象のディレクトリ (および必要なだけの存在していない親ディレクトリ) が作成され、その中に pyvenv.cfg ファイルが置かれます。そのファイルの home キーはこのコマンドを呼び出した Python のインストール場所を指します。このコマンドはまた、python バイナリのコピーを含む bin サブディレクトリを作成します (Windows では、python バイナリを含む Scripts サブディレクトリを作成します)。さらに、lib/pythonX.Y/site-packages (Windows では Lib\site-packages) サブディレクトリも (最初は空の状態で) 作成します。

Windows では、関連する PATH および PATHEXT の設定をしていない場合、以下のように pyvenv スクリプトを呼び出さなければならないかもしれません:

c:\Temp>c:\Python35\python c:\Python35\Tools\Scripts\pyvenv.py myenv

もしくは以下でも同じです:

c:\Temp>c:\Python35\python -m venv myenv

このコマンドを -h をつけて実行すると利用できるオプションが表示されます:

usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear]
            [--upgrade] [--without-pip]
            ENV_DIR [ENV_DIR ...]

Creates virtual Python environments in one or more target directories.

positional arguments:
  ENV_DIR             A directory to create the environment in.

optional arguments:
  -h, --help             show this help message and exit
  --system-site-packages Give the virtual environment access to the system
                         site-packages dir.
  --symlinks             Try to use symlinks rather than copies, when symlinks
                         are not the default for the platform.
  --copies               Try to use copies rather than symlinks, even when
                         symlinks are the default for the platform.
  --clear                Delete the contents of the environment directory if it
                         already exists, before environment creation.
  --upgrade              Upgrade the environment directory to use this version
                         of Python, assuming Python has been upgraded in-place.
  --without-pip          Skips installing or upgrading pip in the virtual
                         environment (pip is bootstrapped by default)

venv 機能がどのように起動されたかによって使用法のメッセージが微妙に変わるかもしれません。例えば venv でなく pyvenv について述べるかもしれません。

バージョン 3.4 で変更: デフォルトで pip をインストールします。--without-pip--copies オプションを追加しました。

バージョン 3.4 で変更: 以前のバージョンでは --clear--upgrade オプションが指定されていない限り、対象のディレクトリが既に存在していた場合はエラーを送出していました。 現在は、既存のディレクトリが指定された場合、中身が削除されディレクトリは新規作成されたように扱われます。

作成された pyvenv.cfg ファイルには、include-system-site-packages キーも含まれます。これは venv--system-site-packages オプションをつけて実行されたなら true で、そうでなければ false です。

--without-pip オプションが与えられない限り、pip を仮想環境でブートするために ensurepip が呼ばれます。

pyvenv に複数のパスを与えることもできます。この場合、与えられたそれぞれのパスに、与えられたオプションに従って、同様の仮想環境が作成されます。

一旦 venv が作成されれば、venv のバイナリディレクトリにあるスクリプトで “有効化” できます。スクリプトの呼び出しはプラットフォーム固有です:

プラットフォーム

シェル

仮想環境を有効化するためのコマンド

Posix bash/zsh $ source <venv>/bin/activate
  fish $ . <venv>/bin/activate.fish
  csh/tcsh $ source <venv>/bin/activate.csh
Windows cmd.exe C:\> <venv>\Scripts\activate.bat
  PowerShell PS C:\> <venv>\Scripts\Activate.ps1

環境の有効化に特別な指定は 必要 ありません。有効化は venv のバイナリディレクトリをパスの最初に加えることで、”python” で venv の Python インタプリタが呼び出されるようにし、インストールされたスクリプトをフルパス無しで実行できるようにするだけです。しかし、インストールされたすべてのスクリプトは有効化しなくても実行可能で、venv の Python で自動的に実行されなければなりません。

シェルで “deactivate” と入力することで、venv を無効化できます。正確な機構はプラットフォーム固有です。例えば、Bash の有効化スクリプトは “deactivate” 関数を定義しています。一方 Windows では、venv が作成されるときに deactivate.batDeactivate.ps1 という別々のスクリプトがインストールされます。

バージョン 3.4 で追加: fish および csh 有効化スクリプト。