我有这个问题的相反问题:
为什么 Visual Studio Code 中的 Python 虚拟环境有双括号?
我收到一条提示,在我的 PS1 提示中显示无括号。
我正在使用最新的Python扩展
v2024.14.0
,并且还尝试了预发布。
我在 MacOS(工作)和 Ubuntu(个人)上始终遇到这个问题,并且设置和项目完全不同。
这是我最简单的设置,以减少任何其他变量:
为了减少发生奇怪事情的可能性,我已将 PS1 全局设置为以下内容:
PS1='\u:\w\$ '
我运行了
rm -rf ~/.config/Code
,完全破坏了所有本地配置和工作区设置。
我打开了 vscode,完全干净,没有工作空间/项目。
我立即点击
file > save workspace as
,并将其另存为:
~/test-bad-venv.code-workspace
。
然后,我确保我绝对没有启用任何扩展,除了最新的 python 扩展:
Python v2024.14.0 (by Microsoft)
我重新启动了 vscode,然后在“我信任作者”对话框中单击“是”。
作为证明,
~/test-bad-venv.code-workspace
文件具有以下内容:
{
"folders": []
}
我创建一个新目录,
~/tmp
,并将其添加到项目中。我创建了一个名为 test.py
的完全空文件,并在 vscode 中打开它。
我第一次打开 vscode 控制台,并运行一些简单的信息命令。
addison:~$ which python3.13
/usr/bin/python3.13
addison:~$ python3.13 --version
Python 3.13.0rc1
addison:~/tmp$ uname -a
Linux addison-ubuntu 5.15.0-119-generic #129-Ubuntu SMP Fri Aug 2 19:25:20 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
addison:~/tmp$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
我运行以下行来创建 venv:
python3.13 -m venv venv
然后选择 venv 解释器,使用
ctrl+shift+p
然后:
Python 3.13.0rc1 ('venv': venv) ./venv/bin/python
当我在 vscode 中打开一个新终端时,这立即显示得很糟糕:
venvaddison:~/tmp$ which python3
/home/addison/tmp/venv/bin/python3
venvaddison:~/tmp$ python3 --version
Python 3.13.0rc1
venvaddison:~/tmp$ echo $PS1
\[\]venv\u:\w\$ \[\]
但它在普通终端、计算机上的其他任何地方都可以正常工作:
addison:~$ cd tmp/
addison:~/tmp$ source venv/bin/activate
(venv) addison:~/tmp$
这似乎只发生在我使用 python3.13 时,我已经用
deadsnakes
安装了它。
这没有理由是一个 python 问题,因为我自己手动运行
source
命令总是可以正常工作 - 即使在 vscode 终端中也是如此。
有人有办法解决这个问题吗?
我可以看到,在python3.13中,在
venv/bin/activate
内,它运行:
VIRTUAL_ENV_PROMPT="venv"
export VIRTUAL_ENV_PROMPT
但是在python3.10中,它有:
VIRTUAL_ENV_PROMPT="(venv) "
export VIRTUAL_ENV_PROMPT
您可以通过编辑 venv/bin/activate 以包含以下内容来修复此问题:
# This is on about like 56, as of python3.13.
# You can change this prompt to be whatever you want
VIRTUAL_ENV_PROMPT="(venv) "
然后硬重新加载 vscode。
请参阅我的帖子 https://github.com/microsoft/vscode-python/pull/23201#issuecomment-2336543889