如何在 Windows 中设置默认 Python 版本?
- 2025-02-17 09:25:00
- admin 原创
- 93
问题描述:
我在 Windows 7 上安装了Python 2.6
并Python 3.1
设置了环境变量:path = d:python2.6
。
当我运行 时python
,cmd
它显示 Python 版本 2.6,这正是我想要的!
但是,当我在 bat 文件中编写脚本并运行它时,显示的 Python 版本是 3.1。
import sys
print (sys.version)
这里发生了什么事?
解决方案 1:
如果您安装了两个版本,情况就是这样。
转到此电脑→右键单击 →单击属性→高级系统设置。
您将看到系统属性。从这里导航到高级选项卡 -> 单击环境变量。
您将看到上半部分是用户变量,下半部分是系统变量。
检查系统变量并双击路径(编辑路径)。
检查 Python 的路径(您希望运行,即 Python 2.x 或 3.x)并将其移动到路径列表的顶部。
重新启动命令提示符,现在当您检查 Python 的版本时,它应该正确显示所需的版本。
解决方案 2:
Python 安装程序会安装适用于 Windows 的 Python Launcher。此程序 ( py.exe
) 与 Python 文件扩展名相关联,并查找“shebang”注释以指定要运行的 Python 版本。这允许多个版本的 Python 共存,并允许 Python 脚本明确指定要使用的版本(如果需要)。如果未指定,则默认使用当前架构(x86 或 x64)的最新 Python 版本。此默认值可以通过py.ini
文件或PY_PYTHON
环境变量进行自定义。有关更多详细信息,请参阅文档。
新版本的 Python 会更新启动器。最新版本有一个py -0
选项可以列出已安装的 Python 并指示当前默认选项。 py -h
列出完整的 Python 启动器选项以及 Python 选项。
以下是如何从控制台检查启动器是否正确注册:
C:>assoc .py
.py=Python.File
C:>ftype Python.File
Python.File="C:Windowspy.exe" "%1" %*
上面,.py
文件与类型相关联Python.File
。命令行Python.File
是 Python Launcher,它安装在 Windows 目录中,因为它始终位于 PATH 中。
script.py
为了使关联起作用,请使用而不是“python script.py”从命令行运行脚本,否则python
将运行 而不是py
。事实上,最好从 PATH 中删除 Python 目录,这样“python”就不会运行任何东西,并强制使用py
。
py.exe
也可以使用开关运行来强制使用 Python 版本:
py -3 script.py # select latest Python 3.X version to be used.
py -3.6 script.py # select version 3.6 specifically.
py -3.9-32 script.py # select version 3.9 32-bit specifically.
py -0 # list installed Python versions (latest PyLauncher).
另外,添加.py;.pyw;.pyc;.pyo
到PATHEXT
环境变量中,然后命令行就可以script
没有扩展名。
解决方案 3:
运行“py”命令将告诉您正在运行哪个版本。如果您当前正在运行 3.x 并且需要切换到 2.x,则需要使用开关“-2”
py -2
如果你需要从 python 2.x 切换到 python 3.x,则必须使用 '-3' 开关
py -3
如果您希望将 Python 3.x 作为默认版本,则需要创建环境变量“PY_PYTHON”并将其值设置为 3。
解决方案 4:
如果您了解Environment variables
并了解系统变量path
,请考虑将任何较早出现的二进制文件的任何版本用作默认值。
看下面的图片,我有 3 个不同的 Python 版本,但 Python3.8
将被用作默认版本,因为它比其他两个版本更早出现。(就上述图片而言,越早意味着越高!)
解决方案 5:
如果您是 Windows 用户并且拥有 Python 3.3 或更高版本,则您应该在您的机器上安装适用于 Windows 的 Python 启动器,这是启动所有 Python 脚本的推荐方式(无论脚本需要哪个 Python 版本)。
作为用户
从命令行运行脚本时始终输入
py
而不是。python
设置您的“打开方式...”资源管理器默认程序与
C:Windowspy.exe
设置命令行文件扩展名关联以使用适用于 Windows 的 Python 启动器(这将使输入成为
py
可选的)。在管理cmd
终端中,运行:
ftype Python.File="C:Windowspy.exe" "%L" %*
ftype Python.NoConFile="C:Windowspyw.exe" "%L" %*
通过设置环境变量来设置您喜欢的默认版本
PY_PYTHON
(例如PY_PYTHON=3.11)
。您可以通过键入来查看您的默认python版本py
。您还可以设置PY_PYTHON3
或PY_PYTHON2
指定默认的python 3和python 2版本(如果您有多个)。如果需要运行特定版本的 Python,可以使用
py -M.m
(其中M
是主版本,m
是次版本)。例如,py -3
将运行任何已安装的 Python 3 版本。使用 列出已安装的 Python 版本
py -0
。
作为编剧
在脚本顶部添加一行 shebang,指示所需的 Python 主版本号。如果脚本与任何其他次版本不兼容,请同时添加次版本号。例如:
#!/usr/bin/env python3
注意:(请参阅此问题)如果python3
不适合您,请确保您已经从 Windows 应用商店安装了 python(例如通过winget install --id 9NRWMJP3717K
,因为 winget 包Python.Python.3.11
似乎不包含python3.exe
)。
您也可以使用 shebang line 来指示虚拟环境(参见下面的 PEP 486)。
参见
PEP 397——适用于 Windows 的 Python 启动器
PEP 486——让 Python 启动器感知虚拟环境
Windows 版 Python 启动器 - 用户指南
解决方案 6:
原始帖子请参阅此处
;
; This is an example of how a Python Launcher .ini file is structured.
; If you want to use it, copy it to py.ini and make your changes there,
; after removing this header comment.
; This file will be removed on launcher uninstallation and overwritten
; when the launcher is installed or upgraded, so don't edit this file
; as your changes will be lost.
;
[defaults]
; Uncomment out the following line to have Python 3 be the default.
;python=3
[commands]
; Put in any customised commands you want here, in the format
; that's shown in the example line. You only need quotes around the
; executable if the path has spaces in it.
;
; You can then use e.g. #!myprog as your shebang line in scripts, and
; the launcher would invoke e.g.
;
; "c:Program FilesMyCustom.exe" -a -b -c myscript.py
;
;myprog="c:Program FilesMyCustom.exe" -a -b -c
因此,在我的系统上,我py.ini
在 py.exe 所在的位置创建了一个文件c:windows
,其中包含以下内容:
[defaults]
python=3
现在,当您双击 .py 文件时,它将由新的默认版本运行。现在我只#! python2
在旧脚本上使用 Shebang。
解决方案 7:
编辑注册表项
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Pathspython.exedefault
设置打开
.py
文件的默认程序为python.exe
解决方案 8:
这对我有用。
如果您想使用 python 3.6 您必须将 python3.6 移至列表顶部。
这同样适用于 python2.7,如果您想将 2.7 作为默认值,请确保将 python2.7 移至列表的最顶部。
步骤 1
第 2 步
步骤 3
然后关闭任何 cmd 命令提示符并再次打开,它应该按预期工作。
python --version
>>> Python 3.6
解决方案 9:
在我的Windows 11 操作系统上安装了Python 版本2.7
、、和时3.7
,我遇到了之前建议的解决方案的问题。不过,我找到了一种适合我的简单方法。3.9
`3.11`
首先,让我们了解如何使用命令设置默认的 Python 版本py
。运行会提供提示,包括对位于 中的文件的py --help
引用。此文件允许我们指定默认的 Python 版本。py.ini
`%LOCALAPPDATA%py.ini`
要设置特定的默认 Python 版本:
打开文本编辑器或在 中创建文件
%LOCALAPPDATA%py.ini
。在文件中添加以下内容
py.ini
:
[defaults]
python=3.7
保存文件。
现在,当您py --version
在控制台中运行时,它应该显示指定的默认 Python 版本。
请注意以下额外注意事项:
设置默认 Python 版本的目的:设置特定的默认 Python 版本有助于确保与某些依赖项的兼容性或保持跨项目的一致性。
位置
%LOCALAPPDATA%
:%LOCALAPPDATA%
环境变量通常指C:Users<username>AppDataLocal
。如果该py.ini
文件在该位置不存在,您可以手动创建它。
解决方案 10:
这对我有用:
转至
Control PanelSystem and SecuritySystem
选择
Advanced system settings from the left panel
from Advanced tab click on Environment Variables
在系统变量部分搜索(如果不存在则创建)
PYTHONPATH
并设置
C:Python27;C:Python27Scripts;
或您想要的版本
您需要重新启动CMD。
如果它仍然不起作用,您可能希望在 PATH 变量中仅保留所需的版本。
解决方案 11:
以上都不起作用,这对我有用:
ftype Python.File=C:Path opython.exe "%1" %*
此命令应在以管理员身份启动的命令提示符中运行
警告:即使此命令中的路径设置为 python35,如果您安装了 python36,它也会将默认值设置为 python36。为防止这种情况,您可以暂时将文件夹名称从 更改为Python36
,xxPython36
运行命令,然后删除对 Python 36 文件夹的更改。
编辑:这就是我最终做的事情:我使用 Python Launcher。https
://stackoverflow.com/a/68139696/3154274
解决方案 12:
现在 Python 3.3 已经发布,最简单的方法是使用这里描述的 py.exe 实用程序:
http ://www.python.org/dev/peps/pep-0397/
它允许您使用 UNIX 样式指令在脚本文件中指定 Python 版本。还有命令行和环境变量选项用于控制运行哪个版本的 Python。
获取此实用程序的最简单方法是安装 Python 3.3 或更高版本。
解决方案 13:
如果您使用的是 Windows,请使用 ASSOC 命令更改 Python 程序的默认 Python 版本。
assoc .py=<Python 3.1 directory>
解决方案 14:
检查系统当前正在使用哪一个:
python --version
将主文件夹位置(例如 C/ProgramFiles)和脚本位置(C/ProgramFiles/Scripts)添加到系统的环境变量中。添加 3.x 版本和 2.x 版本
路径位置在环境变量中排序。如果要使用 Python 2.x,只需将 Python 2.x 的路径放在前面,如果要使用 Python 3.x,只需将 3.x 放在前面
这使用 python 2
解决方案 15:
我遇到了同样的问题,并通过再次执行安装文件解决了它。当你这样做时,python 会自动知道你之前已经安装过它,所以它会推荐你 3 个选项!选择修改并选择所有要修改的包,然后在下一页中,你可以检查新版本的 python 是否已添加到你的环境变量中。检查它,然后执行修改。我这样做了,它解决了。
解决方案 16:
PY_PYTHON
将环境变量设置为2.6
(或您想要的任何版本)。重新启动终端或 cmd 并输入py -0p
。旁边2.6
应该有一个*
,表示这是默认的 python 版本。
解决方案 17:
由于我的问题略有不同,以上方法都对我不起作用,所以我将添加对我有用的方法。我今天安装了适用于 python 3.10 的新 python 启动器,并通过它安装了该版本,但命令窗口无法识别该版本。相反,它列出了我电脑上较旧的 python3 版本。
最后,在 Windows 程序列表中,我看到我有两个版本的 Python 启动器。我卸载了旧版本,现在运行时 Python 3.10 可以正确显示py -0
,并且是运行时选择的版本py
。
如果这是一个菜鸟答案,请原谅,我对这一切都很陌生。
解决方案 18:
我的系统安装了 Python 3.9 和 3.12。由于我无法弄清楚的原因,py
启动器倾向于运行 3.9。
我创建了一个c:Windowspy.ini
包含以下内容:
[defaults]
python=3.12
然后当我运行 时py
,它将运行 3.12。但是,如果我运行第一行包含以下内容的 Python 程序:
#!/usr/bin/python3
或者如果我运行py -3
,那么它仍然会运行 Python 3.9。
我发现的解决方案是添加另一行py.ini
:
python3=3.12
解决方案 19:
用于py -3.7
选择要使用的特定版本,用于py --list
列出已安装的版本。
例如:py -3.7 script.py
解决方案 20:
使用SET
Windows CMD中的命令临时设置当前会话的默认python。
SET PATH=C:Program FilesPython 3.5
解决方案 21:
尝试修改Windows注册表中的路径(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment)。
警告:不要破坏注册表:)
扫码咨询,免费领取项目管理大礼包!