Python Tips:virtualenvwrapper で virtualenv の名前を変更したい

Python の環境管理ツールである virtualenv の便利ラッパー、 virtualenvwrapper で Python 環境(以下 virtualenv )の名前を変更する方法をご消化します。

結論からいうと、本記事執筆時点で virtualenvwrapper には既存の virtualenv に名前を変更する機能は用意されていないようです。 virtualenv をコピーする cpvirtualenv というコマンドが用意されてはいるのですが、「十分にサポートされていないので注意して使ってください」といった旨の注意書きが公式ページになされており、あまりおすすめでないようです。

ということで virtualenv の名前を変更すればどうすればよいか、なのですが、名前を変更するのではなく「同じ設定で作り直す」のがシンプルで確実だと思います。

具体的には、 Python のバージョンとパッケージを移行すれば大丈夫かと思いますので、そのとおりにコマンドを実行します。


$ # virtualenv で使われている Python のバージョンとパッケージのリストを取得
$ workon oldenv
(old
env) $ which python > oldpythonversion.txt
(oldenv) $ pip freeze > oldrequirements.txt
(oldenv) $ deactivate
$
$ # 新しい名前で環境を作成
$ mkvirtualenv new
env -p $(cat oldpythonversion.txt)
(newenv) $ pip install -r oldrequirements.txt
(newenv) $ deactivate
$
$ # 古い環境を削除
$ rmvirtualenv old
env

oldenv 、 newenv は実際の変更前後の virtualenv 名を指定すれば OK です。途中に生成するファイルは無事移行が済んだら削除しておきましょう。

以上です。