[Python] venv のプロンプトを任意のものに変更する
@Python 3.6.7
Python2 系も使うことが無くなってきたので、遅ればせながら virtualenv から venv に移行してみました。
調べてみると、venv では virtualenvwrapper のような一元管理を使うのではなく、プロジェクト直下に venv
というディレクトリを作って管理したほうが良いと書いてあるサイトがちらほら。
参考
その方針自体は良い1のですが、そうするとシェルのプロンプトが (venv)
になってしまいます。
プロンプトは --prompt オプションで変更できる
これだと、「どの仮想環境を使用しているのか分かりづらくらなくなって嫌だな」と思っていたところ、venv のヘルプに --prompt PROMPT
というオプションが。
これを使うと、プロンプトを任意のものに変更できます。素晴らしい。
既に作成済のものを変える方法1
venv/bin/activate
内を見てみると、環境変数PS1
を書き換えているだけなのがわかります。
ここを変更すれば、任意のプロンプトにすることが可能です。
57 58 | if [ "x(myproject) " != x ] ; then PS1= "(myproject) ${PS1:-}" |
ただ、以下の「既に作成済のものを変える方法1(未来)」に書いたように、将来的には pyvenv.cfg
内に設定が移行することが決定しています。
既に作成済のものを変える方法1(未来)
「プロンプトを activate
に直接書くのではなく pyvenv.cfg
に記述したほうがよい」という Issue が挙げられ、変更は既に本線にマージ済みのようです。
参考
将来的に、プロンプトは venv/bin/activate/
の中に書かれるのではなく venv/pyvenv.cfg
内に変数として格納されます。
Python のバージョンによって挙動が変わってくるので注意しましょう。
既に作成済のものを変える方法2
以下のように仮想環境を再作成するのもアリかと思います2。
(venv) $ pip freeze > requirements.txt (venv) $ deactivate $ mv venv venv.bak $ python3 -m venv --prompt myproject venv $ . venv/bin/activate (myproject) $ pip install -r requirements.txt |
0 件のコメント:
コメントを投稿