【问题标题】:How to specify the python version for VSCode virtual environment, when I have multiple python versions intalled?当我安装了多个 python 版本时,如何为 VSCode 虚拟环境指定 python 版本?
【发布时间】:2021-04-18 12:48:15
【问题描述】:

我同时安装了 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 文件的目录?谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    1。 python 命令

    1.1。使用的版本由

    指定

    PATH 仅限环境变量。使用进程PATH 环境变量中的第一个文件夹python.exe。进程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 中 py.exe 旁边的 [defaults](使用 where py 定位)

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

    3。 VS代码python.pythonPath

    3.1。使用的版本由

    指定

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

    3.2.用于

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

    具体来说,python.pythonPath 设置不会影响如果您在集成终端中运行 pypython 会发生什么。只有为python.pythonPath指定了虚拟环境,并启动新的集成终端,并激活了虚拟环境,才会影响它。也就是没有额外的“魔法”添加 VS Code 或 VS Code 集成终端。

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

    如何强制使用32位Python 3.7?

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

    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 必须是绝对的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-30
      • 2022-10-25
      相关资源
      最近更新 更多