我使用python -m venv venv
建立了一个venv,它被vscode识别为有效的解释器,并使用code-runner 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的正确路径。
我已经尝试将vscode中的python.venvPath
变量设置为${workspaceFolder}/env
或fake/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}",
},
}
基本上,我期望集成终端激活venv activate bash脚本并临时替换路径以获取我的venv python作为默认值。然后我就可以使用pip3将相关的软件包安装到venv而不是系统python。但是,尽管在输入之前提示显示(env)
,但实际行为是它在发出命令时指向错误的python版本,例如python3
或pip3
。
任何建议都会很棒!