我已经设置了一个 venv using python -m venv venv,它被 vscode 识别为有效的解释器,并使用代码运行器 vscode 扩展按预期运行我的代码。但vscode集成的bash终端仅使用系统版本的python,即使运行后也是如此source /Fake/path/to/env/bin/activate。终端显示(env)在输入提示符上,但通过检查版本os.path.dirname(sys.executable)显示 python 的版本是我的系统路径中的版本,而不是 venv 中的版本。所以我正在安装的包被安装到系统 python 而不是 venv。
这是 vscode 中终端的问题,而不是 venv 本身的问题,因为当我在本机终端(非集成)中按照上述步骤操作时,我得到了 venv python 的正确路径。
我尝试将python.venvPathvscode 中的变量设置为${workspaceFolder}/envor tofake/path/to/env但都不起作用。我认为可能可以在该terminal.integrated.shellArgs.macos设置下设置 bash shell 参数,但无法弄清楚如何让它在启动时运行正确的激活脚本。作为参考,我当前的 vscode 设置如下:
"settings": {
"code-runner.fileDirectoryAsCwd": true;
"code-runner.executorMap": {
"python": "env/bin/python3",
},
"python.venvPath": "${workspaceFolder}/env",
"terminal.integrated.cwd": "${workspaceFolder}",
},
}
Run Code Online (Sandbox Code Playgroud)
基本上,我期望集成终端激活 venv activate bash 脚本并临时替换路径以获取我的 venv python 作为默认值。然后我就可以使用 pip3 将相关包安装到 venv 而不是系统 python 中。但是,尽管在条目之前显示提示,但实际行为是在发出命令(例如或 ) …