Python3.14更新!同步带来的崭新Python安装方式如何使用?
在Python3.14版本更新后,针对Windows平台,一个新的Python版本管理工具也随着更新一同推出,它就是pymanager,这个版本管理工具同时具备Python安装和版本管理功能,相较于Windows上以往的Python安装、管理方式,pymanager无疑是带来了迟到已久的变革。
在Python官方网站的3.14版本的发布页面明确提到这样一句话:
The installer we offer for Windows is being replaced by our new install manager, which can be installed from the Windows Store or from its download page. See our documentation for more information. The JSON file available for download contains the list of all the installable packages available as part of this release, including file URLs and hashes, but is not required to install the latest release. The traditional installer will remain available throughout the 3.14 and 3.15 releases.
机翻:
我们为Windows提供的安装程序将被新的安装管理器取代,安装管理器可以从Windows商店或其下载页面安装。更多信息请参见我们的文档。可下载的 JSON 文件包含了本版本中所有可安装的软件包列表,包括文件 URL 和哈希值,但安装最新版本并非必须的。传统安装程序将在3.14和3.15版本中继续使用。
也就是说,在未来,以往通过exe直接安装Python具体版本的安装方式将会完全淘汰,无论是出于哪种情况考虑,开发者都迫切需要学会pymanager的基本使用方式。
额外说一句,本人对于这个新的管理工具颇有好感,以往的安装方式是图形化的,它的确方便,但这并不利于培养新手开发者使用命令行的习惯,而pymanager的替代个人认为也有这方面的考虑在。废话就说完了,现在我们进入正题。
安装Pymanager
在正式介绍安装方法前,我强烈建议你卸载电脑上已有的任何Python安装,并且在此基础上清除Python相关的环境变量,以及删除C:\Windows下的py.exe、pyw.exe两个文件,这一步是可选的,不照做也没有任何影响。
安装Pymanager的方法非常简单,只需要访问Python Release Python install manager 25.2页面就行,翻到页面末尾的表格,点击MSI package即可下载安装程序。(Installer (MSIX)其实也可以,它只是会捆绑安装一个Python最新正式版而已,考虑到稍后的内容,我并不推荐下载这个。)
下载完成并且找到该文件后(一般是叫python-manager-<version>.msi,比如我在写这篇文章时pymanager的最新版本是25.2,所以文件名就是python-manager-25.2.msi),直接双击安装即可。注意,这个安装程序并不能选择安装位置,整个安装过程自动进行且没有可以干预的环节.
pymanager安装程序会在安装时同时向系统变量Path注册自己的位置,也就是说,安装完pymanager后,就可以直接开始使用了。
配置Pymanager
在上面,我说安装完成后就能直接使用,这是没错的,但如果你像我一样会将不同的东西进行单独分类,比如将各个编程语言的环境放到专门的文件夹进行管理,那么这个部分就能够帮到你。为此,我们先找到pymanager的安装位置,不出意外的话,它应该是位于C:\Program Files\PyManager目录,不必关心里面的大部分文件,我们重点看pymanager.json。
1 | { |
这个文件是pymanager的配置文件,可以看到,我们能配置的东西还不少,对于我们的需求,需要关注的点是install_dir、download_dir、global_dir以及可选的logs_dir。至于bundled_dir,由于我们一开始就没有选择捆绑安装,所以可以直接将其忽略。
在我的本地环境中,我是将Python单独放在D:\Python目录统一管理的,因此接下来的部分都会使用这个目录,不过你也可以自己决定安装位置,不必跟着我的方案走。我们先来看看这些键分别代表什么(虽然它们的名字足够直观):
- install_dir: 安装目录,也就是实际Python环境安装的目录
- download_dir: 下载目录,安装过程中存放下载缓存的目录
- global_dir: 全局目录,也就是直接执行类似
python、python3.13命令时,实际可执行文件的存放目录(注意,这个目录在自定义后需要额外在环境变量配置) - logs_dir:日志目录……其实我不建议改
我们把这三行配置单独拿出来看看,然后根据它的风格,将目录替换成我们自己的目录(注意,我们是修改这三个键值对,而不是让配置文件只剩下这三个键值对;此外,修改时一定要保证有管理员权限):
1 | ... |
修改后:
1 | ... |
配置完这些,pymanager在安装Python时,就会把文件放在我们配置的目录下了。
安装、管理、运行Python
接下来,我们来看看如何安装、管理、运行Python
安装(install)
安装Python基本子命令是install,如果在前面按照我说的,在安装pymanager前删除了相关文件,那么你就能直接使用py命令,否则,请使用pymanager命令:
1 | 注意 <>是必传参数 在实际使用命令时这些参数是必须的 |
比如,要想安装Python3.14:
1 | py install 3.14 |
在安装后,如果有按照上面的小结配置目录,那么查看runtimes目录,你会发现目录下多了一个pythoncore-3.14-64文件夹,其中的目录结构实际上与以往安装时的目录结构是完全一样的。


在此基础上,pymanager还提供了--update参数,用来升级已有的Python版本,比如,我在写这篇教程时,Python3.13还停留在3.13.8版本,但最新版本却是3.13.11,我们就可以直接在上面的基础上加上这个参数实现升级:
1 | py install --update 3.13 |
最后,我们都知道从3.13开始,Python软件基金会正在逐步去除全局解释器锁,其发布的Free-threaded通常都是版本后边带t后缀,例如Python3.13t。安装它们也非常简单,只需要在对应的版本后边加上t就行了(以3.14为例):
1 | py install 3.14t |
由于我本地安装时实际速度较快,因此没有去确定各个镜像源是否有发布pymanager的相关源,实际碰到下载速度问题时,还请优先去找到这些源的官方网站,例如本人常用的中科大镜像源在此附上。
列出(list)和卸载(uninstall)
每次安装完成后去翻找文件夹确实麻烦,还好pymanager为我们提供了list子命令来列出已安装的版本:
1 | 注意 []是可选参数 也就是说 实际使用时可以不传入相关参数 |
我本地安装的是Python3.12、3.13、3.14三个大版本,列出的结果就是这样的:

还是非常直观的,我们在这里可以很方便的看到已安装版本的架构、名称、版本还有别名。当然,list子命令也可以传入一个具体的版本,来列出对应版本的安装,这里我就不演示了。
还记得上面我们安装的3.14t版本吗?现在我们假设我们已经体验完了这个“玩具版本”,不想再留下它了,此时我们就需要卸载它对吧?直接删除对应的文件虽然可以,但不建议,因为pymanager还提供了uninstall子命令,它跟install子命令的使用方法相似:
1 | py uninstall <version> |
那么要想卸载3.14t,就是这样:
1 | py uninstall 3.14t |
执行命令后,会在卸载前询问是否确认,输入y便可,卸载后我们用list检查一下:

可以看到,3.14t在卸载后,也从列表中消失了。
运行
py和pymanager命令实际上存在一些差别,但别着急,我们稍后来讨论这个问题。现在,我们来直接运行一下py(或者pymanager exec)命令,不出意外的话,你应该能跟我一样打开熟悉的Python交互式解释器(版本可能不太相同):

可以看到,pymanager默认使用最新版本,但如果想使用指定版本,例如3.12,又该怎么办呢?
1 | py -V:<version> |
-V:参数(注意大小写,这里是大写)可以指定一个已安装版本,例如上面,我们想运行3.12版本就该这样:
1 | py -V:3.12 |
我们便成功打开了指定版本的Python交互式解释器:

在使用对应解释器的pip、venv等内置命令时,就能在此基础上,像以往直接使用python命令一样使用-m参数:
1 | py -m pip ... # 使用默认版本 |
当然,直接运行脚本也是如此,现在我们假设要运行的文件是当前目录下的main.py:
1 | py ./main.py # 使用默认版本 |
注意,如果你以前习惯使用py -3.13这样的参数风格,可能需要习惯一段时间,这里只需要记住:在原来的基础上加上V:即可,例如这里就是py -V:3.13。
运行Python
上面我们已经介绍了如何运行Python,你可能会问:为什么这里还要单独列出一个运行Python的章节呢?实际上,运行Python的内容远不止上面提到的,我们接下来要介绍的内容,就是有关脚本文件的运行。
设置文件的默认打开方式
在上面,我们都是基于命令行执行的操作,但也许大部分人在Windows上都更习惯直接双击运行某个Python文件,那么我们先来解决双击运行的问题,随便在什么地方创建两个Python脚本文件,分别以.py、.pyw作为拓展名(里面可以什么都没有,重点是设置打开方式):

由于我在很久之前就已经设置好了打开方式,因此这里.py文件的图标是正常的,但.pyw文件图标是缺失的,第一次安装Python的情况下,缺失图标才是正常现象,我们来分别设置一下打开方式,先来右键.py文件,点击“打开方式>选择其他应用”:

在新的窗口,滚到最下面,点击“在电脑上选择应用”:

接着,找到pymanager的安装位置,我们之前提到过的(C:\Program Files\PyManager),这里的重点是选择python.exe文件:

最后,点击“始终”:

如法炮制,我们来设置.pyw的打开方式,步骤基本不变,但在选择应用程序的步骤,我们这次选择pythonw.exe文件:

同样点击“始终”后,你的文件图标大概就变得跟我一样了:

图标没变的话也不需要担心,因为我们要检查的重点是文件是否真的是以我们指定的方式打开的,为此不妨将这段代码放到文件里,然后直接双击打开看看(该代码来自于Python官方文档 - tkinter):
1 | from tkinter import * |
我的本地环境是将终端设置为了半透明模式的,此前展示的控制台实际上是VSCode自己的控制台,因此不要担心打开的“黑窗口”跟我不一样,我们要查看的重点是那个小窗口,下面是双击.py和.pyw文件后,二者的实际效果:


如果双击文件后直接就显示了窗口,说明你成功了。
在脚本中指定Python版本
在上面,我们都是通过-V:<version>参数来指定运行版本的,但这样做未免有些麻烦,正式讲解内容前,请随便创建一个新的Python文件(我们是要通过控制台输出,从而验证版本,所以请使用.py拓展名),将以下代码复制到你的文件中:
1 | #! |
做完这一步,我们就可以来了解一下Shebang行了,我们来看看官方文档中的描述:
如果脚本文件的第一行以
#!开头,则称为 “shebang” 行。Linux 和其他类 Unix 操作系统对这类行有原生支持,通常用于指示脚本的执行方式。python和py命令允许在 Windows 上的 Python 脚本中使用相同的功能。
这时我们便能明了PyManager目录下pymanager、py和python三个可执行文件分别是用来干什么的了(当然,这也包括对应的pywmanager、pyw和pythonw三个隐藏控制台的版本)
- pymanager & pywmanager: 专门用来管理Python环境的安装、卸载
- py & pyw: 除了拥有pymanager的所有功能,还能直接根据参数、Shebang行自动选择合适的Python版本
- python & pythonw: 跟
py命令一样,不过这个命令通常会被实际的默认版本的Python Alias覆盖,因此通常不会用它
也许刚刚你就在好奇,为什么唯独运行小结会单独在pymanager命令后边额外使用exec子命令,实际上就是因为pymanager并不能直接执行脚本。在py命令存在冲突,不得不使用pymanager时,还请注意这一点。
说回Shebang行,也许你已经注意到,上面的源码中存在一个空的Shebang行,这就是我们接下来要修改的地方了,不过我们先来看看实际支持的所谓“虚拟”命令:
/usr/bin/env <ALIAS>/usr/bin/env -S <ALIAS>/usr/bin/<ALIAS>/usr/local/bin/<ALIAS><ALIAS>
除了最后的python,剩下三个我想长期使用Linux的用户已经觉得眼熟了,这是正常的,因为:
为了允许Python脚本中的shebang行在Unix和Windows之间移植,该启动器支持许多“虚拟”命令来指定要使用的解释器。
还挺周到不是吗?那我们来实际试试:让上面的代码以3.13版本运行,预期的打印应当是类似于这个输出:
1 | 3.13.11 (tags/v3.13.11:6278944, Dec 5 2025, 16:26:58) [MSC v.1944 64 bit (AMD64)] |
将刚刚代码的空Shebang行改成这样:
1 | #! /usr/bin/python3.13 |
然后运行:

输出果然符合预期,注意,如果你不知道<ALIAS>具体替换成什么,请直接通过py list命令查看Alias列(实际写的时候像我上面那样忽略掉拓展名和[x64])。
有关env系列的虚拟命令,由于我没怎么接触过Linux开发,就只能贴上官方文档的描述了:
使用
/usr/bin/env形式的 shebang 行也会在PATH环境变量中搜索未识别的命令。这与 Unix 的env程序的行为相对应,该程序执行相同的搜索,但优先启动已知的 Python 命令。在搜索任意可执行文件时可能会显示警告,并且可以通过shebang_can_run_anything配置选项禁用此搜索。
以指定的虚拟环境运行脚本
在旧的py命令下,实际上可以直接指定虚拟环境的python可执行文件位置,来让脚本以对应的虚拟环境运行,但pymanager并不能直接指定,其中可能的一个原因,估计就是它跟以前一样,会优先选择已经激活的虚拟环境运行脚本。
我们来验证这一点,为此,请用你熟悉的虚拟环境创建工具来创建新的虚拟环境,以3.12版本为例,我个人通常用venv(这里就不罗列对应的pymanager命令了):
1 | py -V:3.12 -m venv env |
创建一个新的Python文件(同样是.py),将以下代码直接复制到文件中:
1 | from sys import executable |
然后,去掉Shebang行,直接执行之前创建好的Python文件,上面的代码会打印出当前所使用解释器的路径,如果激活了虚拟环境,它应该是打印虚拟环境的解释器路径,没有的话,它就是打印默认使用的(或者你指定的)Python版本对应的全局安装路径。
注意,Shebang行、虚拟环境(下面简写为ENV)和-V:<version>(下面简写为-V)存在如下的优先级关系:
1 | -V > Shebang > ENV |
也就是说,直接指定的Python版本优先于Shebang行指定的版本,Shebang行指定的版本优先于当前已经激活的虚拟环境,在实际运行脚本时,一定要特别注意这一点。
实际上,在官方文档中存在这样的描述:
不符合上述任何模式的 shebang 行将被视为相对于脚本文件所在目录的 Windows 可执行文件路径(绝对或相对路径)。这为仅限 Windows 的脚本(如安装程序生成的脚本)提供了便利,因为这种行为与 Unix 风格的 shell 不兼容。这些路径可以加引号,并且可以包含多个参数,之后会追加脚本路径和任何额外的参数。此功能可以通过
shebang_can_run_anything配置选项禁用。
看起来Shebang行至少在设计上应该是支持类似./env/Scripts/python.exe的写法的,但我在实际测试发现并不可行,在没有匹配之前提到的“虚拟命令”,且当前没有激活虚拟环境时,py似乎会选择全局默认版本来运行脚本,尚不确定这是什么情况。
留到最后
由于这篇博客只是为了简单介绍pymanager的使用方法,其内容定然没有官方文档来的详细,链接我似乎在这篇博客里提到了多次,还请原谅我在这里最后一次贴出官方文档的链接,更多内容还请移步到这里:Python 安装管理器。
同时,最近一段时间,Python官方网站设置了一个横幅,那个是捐赠的入口,额……自打Python的核心开发者们被微软辞退后,基金会的现状似乎也不容乐观呢……
Banners are cringe,
but so is unfunded software development and security 😅
Please keep reading:As the Python Software Foundation (PSF) closes out 2025, we humbly ask you to reflect on how Python has impacted your life, what value it provided you, and whether you’re able to give $10 back. The PSF is the charity supporting the Python community and protecting the Python programming language, ensuring it stays free, forever, for everyone.
If Python has provided at least $10 of value to you in the past year, please help by donating now–your support really makes all the difference. Thank you for your time and generosity!
机翻:
横幅真让人尴尬,
但无资金的软件开发和安全😅同样重要,
请继续阅读:随着Python软件基金会(PSF)即将结束2025年,我们谦逊地邀请您反思Python如何影响了您的生活,它为您带来了哪些价值,以及您是否能够回馈10美元。PSF是支持Python社区、保护Python编程语言的慈善机构,确保它永远免费,惠及所有人。
如果过去一年Python至少为你提供了10美元的价值,请现在就捐款——你的支持真的能带来巨大改变。感谢您的时间和慷慨!
在此,我也呼吁看到这里的朋友能在自己经济能力允许的情况下,支持一下Python软件基金会,正如横幅所说的,我们的支持真的能带来巨大的改变()
最后,非常感谢能看到这里,一如既往的希望我的内容能帮到阅读我博客的你~



