当我安装了多个Python版本时,如何为VSCode虚拟环境指定Python版本?

Chr*_*s T 4 python windows python-venv visual-studio-code

我安装了 64 位和 32 位 Python。我试图在 VSCode 中使用 32 位 Python.exe 文件创建一个虚拟环境。我在 Python: Select Interpreter 中为我的工作区选择了该版本(即 C:\Program Files (x86)\Python37-32\python.exe)。

然后,我更改了工作区中的 launch.json 文件以包含“python”解释器:

{
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "python": "c:/Program Files (x86)/Python37-32/python.exe"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

但是,当我创建虚拟环境时:

py -3 -m venv 32_bit_env
Run Code Online (Sandbox Code Playgroud)

它使用的 python 解释器是来自 C:\Program Files\Python37\python.exe 的 64 位版本,如 pyvenv.cfg 中所示:

home = C:\Program Files\Python37
Run Code Online (Sandbox Code Playgroud)

是否有其他位置可以更改工作区中 python.exe 文件的目录?谢谢你!

np8*_*np8 8

您正在混合两个概念:VS Code 使用的 Python 解释器和py启动器。除此之外,还有python命令。我将尝试解释它们是如何配置的以及它们如何影响以及什么。

1.python命令

1.1. 使用的版本指定为

PATH仅环境变量。 使用ProcessPATH环境变量中的第一个文件夹。python.exe进程PATH是在启动进程时通过组合用户路径变量和系统路径变量形成的。子进程,例如VS Code的集成终端,PATH在初始化时会继承父进程的进程。

  • home如果虚拟环境处于活动状态,则使用的版本是pyvenv.cfg. 激活虚拟环境会修改PATHshell 的属性。

1.2. 用于

python当您在终端中运行命令时。

2.py命令

py命令是Python 3.3 中添加的Windows 版 Python 启动器

2.2 使用版本 指定者

首先,按照这个顺序检查这些

  • 活跃的虚拟环境
  • 脚本中的 shebang 行(如果存在)
  • 使用 -2 或 -3 标志匹配 PY_PYTHON2 或 PY_PYTHON3 环境变量
  • PY_PYTHON 环境变量
  • 来自 %LOCALAPPDATA%\py.ini 中 py.ini 的 [defaults]
  • 来自 py.ini 中 py.exe 旁边的 [defaults](用于where py定位)

如果没有另外指定,它将始终使用最新安装的版本。

3.VS代码python.pythonPath

3.1. 使用的版本指定为

.vscode\settings.jsonpython.pythonPath关键。

3.2. 用于

  • Python: Run Python File in Terminal当你在 VS Code 中使用时
  • 当您Run: Run Without Debugging在 VS Code 中使用 .py 文件时
  • 当您Run: Start Debugging在 VS Code 中使用 .py 文件时
  • 当您在 VS Code 中启动新的集成终端时,如果 python.exe 位于虚拟环境中,它将被激活。
  • 语言服务,例如自动完成、linting、语法检查、格式化。仅那些未使用集成终端运行的程序。

具体来说,如果您运行或在集成终端中运行,该python.pythonPath设置不会影响发生的情况。仅当您为 指定了虚拟环境,并启动了新的集成终端,并且虚拟环境已激活时,才会对其产生影响。也就是说,没有额外添加 VS Code 或 VS Code 集成终端的“魔力”。pypythonpython.pythonPath

集成终端(默认情况下)只是一个常规的 Powershell。它不知道您python.pythonPath在 VS Code 中的设置。

如何强制使用32位Python 3.7?

您可以使用 python 3.7-32bit 创建虚拟环境

py -3.7-32 -m venv 32_bit_env
Run Code Online (Sandbox Code Playgroud)

或者,32 位 v.3.7 的完整文件路径。python.exe,假设使用 Powershell(因此&):

& "C:\some\path\Python 3.7 32-bit\python.exe" -m venv 32_bit_env
Run Code Online (Sandbox Code Playgroud)

py -0p如果需要,您可以使用 检查完整的文件路径。然后,您可以通过编辑 settings.json 使该虚拟环境在新的 VS Code 集成终端中自动激活:

{
    "python.pythonPath": "C:/tmp/someproj/my_venv/Scripts/python.exe"
}
Run Code Online (Sandbox Code Playgroud)

请注意,\条目中的每个都必须替换为\\/。必须python.pythonPath是绝对的。