我同时安装了 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.cfg
的home
键指向的版本。激活虚拟环境会修改 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、语法检查、格式化。只有那些没有使用集成终端运行的。
具体来说,如果您运行 py
或 python
,python.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/