pyvenv は deprecated なので venv を使う話

2016/01/31

Python にはインストールされているパッケージを環境ごとに隔離できる ソフトウェアとして virtualenv がある。

これは、 python の実行バイナリとか、ライブラリ、include ファイルなどを コピーしたりシンボリックリンクつくったりしたりして機能を提供している。

ただコピーしたりシンボリックリンクつくったりするより、もっと手軽に 隔離された環境をつくれると良いよねってことで PEP 0405 で議論され, Python 3.3 で標準のライブラリに venv が追加された。

この venvpython -m venv といったかたちで venv モジュールを呼び出してあげると つかえるが、 pyvenv といったコマンドも利用できた。

ただ、 pyvnev コマンドだと、どのバージョンの Python が利用されるか 分かり辛かったらしい。確かに僕も最初は virtualenv と混同していた。

ここらへんの話は Issue 25152: venv documentation doesn't tell you how to specify a particular version of python - Python tracker で進められていて、 Issue 25154: Drop the pyvenv script - Python tracker にて将来の Python 3.8 で pyvenv を消す方針とされたらしい。

今後、消されてしまう pyvenv ではなく python -m vnev を利用するようにしましょう。

$ python3 -m venv some_venv

とかで呼び出して。

venv is not virtualenv ということで。

ヘルプ

以下、 Python 3.5.1 の venv ヘルプ

$ python3.5 -m venv -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)

Once an environment has been created, you may wish to activate it, e.g. by
sourcing an activate script in its bin directory.

参考