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

标签 python windows visual-studio-code python-venv

我同时安装了 64 位和 32 位 Python。我试图在 VSCode 中使用 32 位 Python.exe 文件创建一个虚拟环境。我在 Python 中选择了那个版本:为我的工作区选择解释器(即 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"
        }
    ]
}

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

py -3 -m venv 32_bit_env

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

home = C:\Program Files\Python37

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

最佳答案

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

1。 python 命令

1.1。使用的版本由

指定 仅限

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

  • 如果虚拟环境处于事件状态,则使用的版本是 pyvenv.cfghome 键指向的版本。激活虚拟环境会修改 shell 的 PATH

1.2。用于

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

2。 py 命令

py 命令是 Python Launcher for Windows ,在 Python 3.3 中添加。

2.2 使用版本指定

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

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

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

3。 VS 代码 python.pythonPath

3.1。使用的版本由

指定

.vscode\settings.json 中,python.pythonPath 键。

3.2。用于

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

具体来说,如果您运行 pypythonpython.pythonPath 设置不会影响发生的事情> 在集成终端中。只有当你为 python.pythonPath 指定了一个虚拟环境,并启动新的集成终端,并且虚拟环境被激活时,它才会影响它。也就是说,没有额外“神奇”地添加VS Code或VS Code集成终端。

集成终端(默认情况下)只是一个普通的 Powershell。它对您的 VS Code 中的 python.pythonPath 设置一无所知。

如何强制使用32位Python 3.7?

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

py -3.7-32 -m venv 32_bit_env

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

& "C:\some\path\Python 3.7 32-bit\python.exe" -m venv 32_bit_env

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

{
    "python.pythonPath": "C:/tmp/someproj/my_venv/Scripts/python.exe"
}

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

关于python - 当我安装了多个 python 版本时,如何为 VSCode 虚拟环境指定 python 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65703076/

相关文章:

windows - Win32 应用程序是否自动链接到 ntdll.dll?

windows - 如何获取应用程序从文件系统读取/写入文件系统所花费的总时间?

javascript - 使用 VS 代码在 ASP.NET Core MVC 中调试 javascript 和 c#

F# ionide websharperserverclient - 如何运行

python - PyParsing Optional() 挂起

python - 使用 (apitoken/apikey) 自动上传 bugsense proguard 映射文件

python - 从 numpy 数组中删除元素时跟踪删除的索引

python - 在 Django 中编写多人游戏

c# - 未生成资源文件代码

visual-studio-code - 由于 "Extension ' JSON 语言功能“无法格式化文件”错误,Visual Studio Code 未格式化