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.bat と Deactivate.ps1 という別々のスクリプトがインストールされます。
バージョン 3.4 で追加: fish および csh 有効化スクリプト。
