Edited at

(注意) pyenv-virtualenv と virtualenv は別のプロダクトです

More than 1 year has passed since last update.

pyenv-virtualenvvirtualenv を混同している記事をたまに見かけるので、注意喚起です。


概要

pyenv とともに仮想環境を使いたいとき、 pyenv のプラグインである pyenv-virtualenv を使うことがあります。

この pyenv-virtualenv は、 virtualenv とは別のものです。

両者を混同している記事がQiita にもありますが、

以下を見るとわかるように、それぞれ別プロダクトです。ご注意を。


pyenv-virtualenv

pyenv のプラグインで、 pyenv virtualenv コマンドを使えるようにするもの。


公式サイト

https://github.com/pyenv/pyenv-virtualenv


使用例

新しい仮想環境を作るには、

$ pyenv virtualenv {pythonバージョン} {仮想環境のディレクトリ}

を実行します。

例:

$ pyenv virtualenv 2.7.10 my-virtual-env-2.7.10

(公式サイトより)


補足

内部的には virtualenv を呼び出しているようです。

(はっきりとは書いていませんが)公式ページに以下のようにあります。


pyenv-virtualenv uses python -m venv if it is available and the virtualenv

command is not available.


(venv は virtualenv が Python 公式に取り入れられたものです (Python 3.3 以降で使用可能))


virtualenv


公式サイト

https://github.com/pypa/virtualenv

https://virtualenv.pypa.io/en/stable/


使用例

新しい仮想環境を作るには、

$ virtualenv {仮想環境ディレクトリ名}

を実行します。

例:

$ virtualenv my-virtual-env

なお -p オプションによって、特定の Python インタープリタを指定することもできます。


補足 その1

実際のところは、まず「そもそも自分の用途に pyenv は必要なのか?」と考える必要があります。

virtualenv でも、 Python の処理系のバージョンをざっくり指定できますので。

pyenvが必要かどうかフローチャート - Qiita


補足 その2

pyenv-virtualenvwrappervirtualenvwrapper もまた、それぞれ別のプロダクトです。