@JonathanArma

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

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

6Answer

はじめまして。

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

% 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

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

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スクリプトが変更後の挙動をすると、ご報告の現象が発生します。通常そんなことは起こりえないと思いますが、このあたりが調査のヒントになるかもしれません。

1Like

Comments

  1. @JonathanArma

    Questioner

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

    VS CodeのPython拡張が最新であることをご確認いただけますか。

    最新の2025.6.1であることを確認いたしました。
    https://github.com/microsoft/vscode-python/releases

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

    下記のようにsettings.jsonを追記し、VSCodeを再起動させ検証を行いました。
    VSCode内のターミナルおよびターミナルアプリそれぞれでディレクトリ作成から行いましたが、問題は解決していませんでした。

    {
        "hediet.vscode-drawio.resizeImages": null,
        "python.experiments.optOutFrom": ["pythonTerminalEnvVarActivation"]
    }
    

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

    挙動について説明いただきましてありがとうございます。内容を読み、動きについて理解できました。VSCodeの拡張機能側で何をしているのかも調べてみようと思います。

MacのターミナルなのかVSCのターミナルなのかどちらでしょうか?

VSCならVSCの拡張機能のPythonによるバグであることが報告されています。

スタックオーバーフローの報告によると以前の版に戻せば一時的に回避できるそうです。

既に修正済みとのこと。更新が無いか確認した方が良いでしょう。

1Like

Comments

  1. @JonathanArma

    Questioner

    ご回答ありがとうございます。

    MacのターミナルなのかVSCのターミナルなのかどちらでしょうか?
    どちらでも発生しております。

    VSCならVSCの拡張機能のPythonによるバグであることが報告されています。

    はい。@jmatsuzawa様にもご指摘いただき、最新バージョンかどうか確認しましたが、
    最新の2025.6.1であることを確認しております。
    https://github.com/microsoft/vscode-python/releases

    改めてVSCodeの状態については頂いたリンクを読み他に対応策が取れないか確認してみます。

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

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

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

下記の通りの結果となりました。(名前を全て"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

@jmatsuzawa様と@STSynthe様にご確認いただきまして、下記を実行いたしましたので結果を記入致します。

  1. MSCodeのアンインストール
    アンインストール後Macのターミナルにて新規に仮想環境を作成しましたが、かっこが2つできる問題は解決しませんでした。

  2. pyenvのglobal設定systemに変更
    こちらの設定について完全に失念しており、後出しの情報になってしまいたいへん申し訳ありません。
    pyenvにて3.12.10をインストールし、3.12.10をglobal設定にしていました。まずglobal設定をmacOSにデフォルトで入っていたバージョン3.9.6に変更して仮想環境を構築したところかっこが2つできる問題が解消しました。

hoge@hogenoMacBook-Air newdir2 % pyenv --version
pyenv 2.5.7
hoge@hogenoMacBook-Air newdir2 % pyenv versions
  system
* 3.12.10 (set by /Users/hoge/.pyenv/version)
hoge@hogenoMacBook-Air newdir2 % pyenv global system
hoge@hogenoMacBook-Air newdir2 % pyenv versions
* system (set by /Users/hoge/.pyenv/version)
  3.12.10
hoge@hogenoMacBook-Air newdir2 % python3 --version 
Python 3.9.6
hoge@hogenoMacBook-Air newdir2 % python3 -m venv systemenv
hoge@hogenoMacBook-Air newdir2 % ls 
systemenv	venv
hoge@hogenoMacBook-Air newdir2 % source systemenv/bin/activate
(systemenv) hoge@hogenoMacBook-Air newdir2 % deactivate

3.pyenvの3.12.10のアンインストールとインストール
続いてpyenvの3.12.10をアンインストールし、再度3.12.0をインストールし、仮想環境を作成してみましたがかっこが2つできる問題が発生しました。

hoge@hogenoMacBook-Air newdir2 % pyenv uninstall 3.12.10
pyenv: remove /Users/hoge/.pyenv/versions/3.12.10? (y/N) y
pyenv: 3.12.10 uninstalled
hoge@hogenoMacBook-Air newdir2 % pyenv versions         
* system (set by /Users/hoge/.pyenv/version)
hoge@hogenoMacBook-Air newdir2 % pyenv install 3.12.10
Downloading openssl-3.3.3.tar.gz...

...略...

hoge@hogenoMacBook-Air newdir2 % pyenv versions
* system (set by /Users/hoge/.pyenv/version)
  3.12.10
hoge@hogenoMacBook-Air newdir2 % pyenv global 3.12.10
hoge@hogenoMacBook-Air newdir2 % ls
systemenv	venv
hoge@hogenoMacBook-Air newdir2 % python3 -m venv 31210env
hoge@hogenoMacBook-Air newdir2 % source 31210env/bin/activate
((31210env) ) hoge@hogenoMacBook-Air newdir2 % 

OS側かpyenv自体に3.12.10に関する何かの設定が残っているように見えるため、追加で下記を対応しました

4.pyenvのアンインストールとインストール
pyenv側の問題であることかどうか棄却するために、pyenvのアンインストールとインストールを行いました
結果としては3.12.10をglobal設定にした場合はかっこが2つ出る問題が発生し、
3.12.9をglobal設定にした場合は問題が発生しませんでした。

以上を踏まえるとOS側の設定に3.12.10に関する設定が残存しているように思えます。

0Like

Comments

  1. @JonathanArma さん

    詳細な情報ありがとうございます。教えていただいた手順でこちらでも再現できました。

    そして原因が分かりました。CPython 3.12.10自体の不具合です。Issue も上がっていました。

    残念なことに、本不具合は修正されません。3.12系は、3.12.10が最後のbugfixリリースとなっています (2027-10までメンテナンスはされますが、3.12.11以降はsecurity-fixのみが適用される予定です。本不具合はsecurity問題ではないので、残念ながら3.12で修正されることはありません)。

    3.13へのアップグレードをお勧めしますが (3.13では再現しません)、システム要件の都合で3.12がどうしても必要な場合は諦めるしかなさそうです。

    ※一応、$(pyenv root)/versions/3.12.10/lib/python3.12/venv/scripts/common/activate を以下のように修正することで、自分で直すことは容易ですが、お勧めはしません。どうしても直したいときに参考にしてみてください。

    @@ -67,7 +67,7 @@
    
     if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then
         _OLD_VIRTUAL_PS1="${PS1:-}"
    -    PS1="("__VENV_PROMPT__") ${PS1:-}"
    +    PS1=__VENV_PROMPT__" ${PS1:-}"
         export PS1
     fi
    
  2. @JonathanArma

    Questioner

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

    原因とGithubの記事についても共有ありがとうございます。
    3.12.10特有の不具合であること理解いたしました。
    自身の作りたいWebAppにおいてはバージョンにこだわりはないため、

    本質問はいただいた上記コメントを回答にクローズとしたいと思います。
    機能的に問題ない箇所であるにも関わらず、原因特定および再現までお付き合いいただいたことに感謝申し上げます。

Your answer might help someone💌