@JonathanArma

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

venvを利用した仮想環境起動時の環境名にかっこが2つ表示されてしまう

解決したいこと

WebAppを開発したく、Flaskをインストールしたvenvでの仮想環境を作りたい。
下記手順で仮想環境を構築したところ、
ユーザ名の左側の環境名に"かっこ"が2つ表示されてしまう。
通常と同じようにかっこを1つにしたい。

環境
Mac
ターミナル

発生している問題

((env) ) hoge@hogeMacBook-Air webapp % 

理想の状態

(env)hoge@hogeMacBook-Air webapp % 

構築手順

hoge@hogeMacBook-Air develop % mkdir webapp
hoge@hogeMacBook-Air develop % cd webapp 
hoge@hogeMacBook-Air webapp % python -m venv env
hoge@hogeMacBook-Air webapp % ls
env
hoge@hogeMacBook-Air webapp % source env/bin/activate
((env) ) hoge@hogeMacBook-Air webapp % 

自分で試したこと

別のディレクトリを作成し、同様の手順で構築しても同様の事象が発生した。

また、構築時に誤った行動として下記のようなことを実施してしまっている。
下記行動をする前に作成した仮想環境ではかっこは2つ存在しない。
・仮想環境起動中にターミナルをexitコマンドでクローズしてしまった。
・同時にVSCodeのターミナルにて、すでに仮想環境を起動しているにも関わらず、activateを実行してしまった。

同様の事象が発生され、解決された方いらっしゃいましたら、解決方法についてご教示お願いいたします。
不足している情報がございましたら取得いたします。

0 likes

4Answer

はじめまして。

まず、何が起きているのかを把握するために、以下のコマンドを記載の順で実行し、その出力結果を共有いただくことは可能でしょうか? (見せられない情報が出力されていれば、そこはマスクして隠していただいて大丈夫です)

% python --version

% env | grep -E '(PROMPT|PS1)'

% set -x; source env/bin/activate; set +x

% env | grep -E '(PROMPT|PS1)'

% grep command env/pyvenv.cfg

また、新しいディレクトリで以下のコマンドも試してみていただけますか。

% python -m venv --prompt env env

% source env/bin/activate

ちなみに、お困りになっていることは括弧が二つ表示されてしまう現象だけでしょうか? これ以外にvenvの挙動がおかしいなどはありませんか?

1Like

初めまして。よろしくお願いいたします。

ご確認いただきましてありがとうございます。

以下のコマンドを記載の順で実行し、その出力結果を共有いただくことは可能でしょうか?

下記の通りの結果となりました。(名前を全て"hoge"に変更しています。)

hoge@hogeMacBook-Air webapp % python --version
Python 3.12.10
hoge@hogeMacBook-Air webapp % env | grep -E '(PROMPT|PS1)'
PS1=%n@%m %1~ %# 
hoge@hogeMacBook-Air webapp % set -x; source env/bin/activate; set +x
+/bin/zsh:34> source env/bin/activate
+env/bin/activate:37> deactivate nondestructive
+deactivate:2> [ -n '' ']'
+deactivate:7> [ -n '' ']'
+deactivate:16> hash -r
+deactivate:18> [ -n '' ']'
+deactivate:24> unset VIRTUAL_ENV
+deactivate:25> unset VIRTUAL_ENV_PROMPT
+deactivate:26> [ '!' nondestructive '=' nondestructive ']'
+env/bin/activate:40> uname
+env/bin/activate:40> case Darwin (CYGWIN* | MSYS* | MINGW*)
+env/bin/activate:40> case Darwin (*)
+env/bin/activate:49> export VIRTUAL_ENV=/Users/hoge/develop/webapp/env
+env/bin/activate:53> _OLD_VIRTUAL_PATH='/Users/hoge/.pyenv/shims:/Users/hoge/.pyenv/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/hoge/.pyenv/bin:/Users/hoge/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand' 
+env/bin/activate:54> PATH='/Users/hoge/develop/webapp/env/bin:/Users/hoge/.pyenv/shims:/Users/hoge/.pyenv/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/hoge/.pyenv/bin:/Users/hoge/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand' 
+env/bin/activate:55> export PATH
+env/bin/activate:57> VIRTUAL_ENV_PROMPT='(env) ' 
+env/bin/activate:58> export VIRTUAL_ENV_PROMPT
+env/bin/activate:63> [ -n '' ']'
+env/bin/activate:68> [ -z '' ']'
+env/bin/activate:69> _OLD_VIRTUAL_PS1='%n@%m %1~ %# ' 
+env/bin/activate:70> PS1='((env) ) %n@%m %1~ %# ' 
+env/bin/activate:71> export PS1
+env/bin/activate:76> hash -r
+/bin/zsh:34> set +x
((env) ) hoge@hogeMacBook-Air webapp % env | grep -E '(PROMPT|PS1)'
PS1=((env) ) %n@%m %1~ %# 
VIRTUAL_ENV_PROMPT=(env) 
((env) ) hoge@hogeMacBook-Air webapp % grep command env/pyvenv.cfg
command = /Users/hoge/.pyenv/versions/3.12.10/bin/python -m venv /Users/hoge/develop/webapp/env

また、新しいディレクトリで以下のコマンドも試してみていただけますか。

以下が実行結果となります。

hoge@hogeMacBook-Air webapp % cd ..
hoge@hogeMacBook-Air develop % mkdir newdir
hoge@hogeMacBook-Air develop % cd newdir 
hoge@hogeMacBook-Air newdir % python -m venv --prompt env env
hoge@hogeMacBook-Air newdir % source env/bin/activate
((env) ) hoge@hogeMacBook-Air newdir % 

ちなみに、お困りになっていることは括弧が二つ表示されてしまう現象だけでしょうか? これ以外にvenvの挙動がおかしいなどはありませんか?

はい。かっこが2つある環境においても、pip install hogeなどを行うことができてきます。installしたフレームワークも動作していました。
なので、今のところvenvを利用するにあたり明確に困っていることはないのですが、表示の挙動が変わったことが少し気持ち悪いため、この度質問させていただいた次第です。

以上、よろしくお願いいたします。

0Like

五月雨に失礼致します。

かっこが二つない環境でシェルのトレース情報を取得した結果は下記の通りです。

hoge@hogenoMacBook-Air docker-django % set -x; source env/bin/activate; set +x
+/bin/zsh:75> source env/bin/activate
+env/bin/activate:38> deactivate nondestructive
+deactivate:2> [ -n '' ']'
+deactivate:7> [ -n '' ']'
+deactivate:16> [ -n '' -o -n 5.9 ']'
+deactivate:17> hash -r
+deactivate:20> [ -n '' ']'
+deactivate:26> unset VIRTUAL_ENV
+deactivate:27> [ '!' nondestructive '=' nondestructive ']'
+env/bin/activate:40> VIRTUAL_ENV=/Users/hoge/develop/docker-django/env 
+env/bin/activate:41> export VIRTUAL_ENV
+env/bin/activate:43> _OLD_VIRTUAL_PATH='/Users/hoge/.pyenv/shims:/Users/hoge/.pyenv/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/hoge/.pyenv/bin:/Users/hoge/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand' 
+env/bin/activate:44> PATH='/Users/hoge/develop/docker-django/env/bin:/Users/hoge/.pyenv/shims:/Users/hoge/.pyenv/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/hoge/.pyenv/bin:/Users/hoge/Library/Application Support/Code/User/globalStorage/github.copilot-chat/debugCommand' 
+env/bin/activate:45> export PATH
+env/bin/activate:50> [ -n '' ']'
+env/bin/activate:55> [ -z '' ']'
+env/bin/activate:56> _OLD_VIRTUAL_PS1='%n@%m %1~ %# ' 
+env/bin/activate:57> PS1='(env) %n@%m %1~ %# ' 
+env/bin/activate:58> export PS1
+env/bin/activate:64> [ -n '' -o -n 5.9 ']'
+env/bin/activate:65> hash -r
+/bin/zsh:75> set +x
(env) hoge@hogenoMacBook-Air docker-django % 

ご参考までに投稿しておきます。

0Like

ご確認ありがとうございます。

VS Codeも使われているということですが、VS CodeのPython拡張でご報告と同じ現象が発生するIssueが見つかりました。1年以上前の古いIssueなのでこれとは関係ないかもしれませんが、念のため VS CodeのPython拡張が最新であることをご確認いただけますか。

最新版で再現する場合、こちらで報告されている以下の設定をVS Codeのsettings.jsonに記載して直るかどうか確認していただけますか。

"python.experiments.optOutFrom": ["pythonTerminalEnvVarActivation"],

以下、上記で全く改善しない場合に原因究明の参考になるかもしれない情報です。

共有いただいたログからは、venv実行時点でvenvモジュールが括弧付きの仮想環境名が埋め込まれたactivateスクリプトを生成し、activateスクリプトがそのその仮想環境名をさらに括弧付きでPS1に設定することで、結果的に二重に括弧がついていることが確認できます。venvモジュールの変更履歴を確認したところ、以前は括弧の付与をvenvモジュールが行っていたが、ある時点からactivateスクリプトが括弧を付けるように変更が入ったことが確認できました。おそらくこの変更の影響を受けていると思われます。現象としては、なぜかvenvモジュールが変更前の挙動をし、activateスクリプトが変更後の挙動をすると、ご報告の現象が発生します。通常そんなことは起こりえないと思いますが、このあたりが調査のヒントになるかもしれません。

0Like

Your answer might help someone💌