如何更新Python?

145 投票
4 回答
501373 浏览
提问于 2025-04-17 17:15

我在2012年初安装了2.7版本的Python。现在我不知道在安装最新版本之前,是不是应该完全卸载并清除这个旧版本。

是“软”卸载旧版本?还是“硬”卸载/清除旧版本?或者直接在上面安装新版本?

我曾经看到过一种特别的安装/升级方法,使用一种“分段”的方式来管理Python的不同版本,让它们各自独立又能正常工作。但我不确定这是不是大家普遍采用的标准方法。

我还在想,Revo这个工具是不是太过于激进,可能会把一些仍然需要的东西清除掉,比如环境变量/PATH变量。

(Windows 7 64位,32位Python)

4 个回答

5
  • 官方的 Python .msi 安装程序是用来替换以下内容的:

    • 任何之前的小版本(在 x.y.z 中,z 是“小版本”)因为它们保证向后兼容和二进制兼容
    • 任何小版本的“快照”安装(从源代码构建的)
  • 快照安装程序是用来替换任何较低小版本的快照。

(有关 2.x 的具体代码请查看 这里,有关 3.x 的请查看 这里

其他版本不一定兼容,因此会和现有版本一起安装。如果你想卸载旧版本,需要手动进行。同时也要卸载为其安装的任何第三方模块:

  • 如果你是通过 bdist_wininst 包(Windows .exe 文件)安装的模块,卸载版本之前要先卸载这些模块,否则卸载程序可能无法正常工作,因为它可能有自定义逻辑
  • setuptoolspip 安装的模块,位于 Lib\site-packages 中,可以在之后直接删除
  • 如果你安装了用户级别的包,它们会位于 %APPDATA%/Python/PythonXY/site-packages 中,同样可以删除
5

最好的办法是把不同版本的Python安装在不同的路径下。

比如说,可以把2.7版本装在C:\Python27,3.3版本装在C:\Python33。

想了解更多信息,可以看看这个链接: 如何在Windows上运行多个Python版本

109
更新: 2018-07-06

这篇文章现在快5年了!Python-2.7将在2020年停止接收python.org的官方更新。另外,Python-3.7已经发布。可以查看Python-Future,了解如何让你的Python-2代码兼容Python-3。关于更新conda,现在的文档建议在每个conda环境中使用conda update --all来更新所有包和该版本的Python可执行文件。此外,由于他们把名字改成了Anaconda,我不确定Windows注册表的键是否还一样。

更新: 2017-03-24

自2015年6月以来,Python(x,y)没有更新,所以我觉得可以安全地认为它已经被放弃了。

更新: 2016-11-11

正如@cxw在下面评论的,这些答案是针对相同位数版本的,位数版本是指64位和32位。例如,这些答案适用于从64位的Python-2.7.10更新到64位的Python-2.7.11,也就是相同的位数版本。虽然可以同时安装两个不同位数的Python,但这需要一些技巧,所以我就不在这里详细讲了。如果你不想折腾的话,我建议在切换位数版本时,先删除另一个位数版本。

更新: 2016-05-16
  • AnacondaMiniConda可以与现有的Python安装一起使用,只需禁用更改Windows PATH和注册表的选项。解压后,在你的bin目录中创建一个指向conda的符号链接,或者从PyPI安装conda。然后在Anaconda/Miniconda的根bin文件夹中创建另一个名为conda-activate的符号链接,指向activate。现在Anaconda/Miniconda就像Ruby的RVM一样。只需使用conda-activate root来启用Anaconda/Miniconda。
  • Portable Python不再开发或维护。

总结

  • 使用Anaconda或miniconda,只需执行conda update --all来保持每个conda环境的更新,
  • 相同的主要版本的官方Python(例如2.7.5),只需覆盖旧版本(例如2.7.4),
  • 不同的主要版本的官方Python(例如3.3),与旧版本并排安装,设置路径/关联指向主要版本(例如2.7),并为其他版本创建快捷方式(例如在BASH中$ ln /c/Python33/python.exe python3)。

答案取决于:

  1. 如果提问者有2.7.x并想安装更新的2.7.x版本,那么

    • 如果使用MSI安装程序官方Python网站,只需覆盖旧版本,安装程序会发出警告,说明将删除并替换旧版本;在“控制面板”的“已安装程序”中查看,确认旧版本已被新版本替换;更新的2.7.x版本是向后兼容的,所以这是完全安全的,因此我认为不需要同时安装多个2.7.x版本。
    • 如果是从源代码构建,那么你应该在一个干净的新目录中构建,然后在通过所有测试并确认成功构建后,将路径指向新构建,但你可能希望保留旧构建,因为从源代码构建有时会出现问题。可以查看我关于在Windows 7上使用SDK 7.0构建Python x64的指南
    • 如果是从像Python(x,y)这样的发行版安装,请查看他们的网站。Python(x,y)已经被放弃。 我相信可以通过Python(x,y)的包管理器处理更新,但更新也包含在他们的网站上。我找不到具体的参考,所以也许其他人可以对此进行说明。类似于ActiveState和可能的Enthought,Python(x,y)明确表示与其他Python安装不兼容:

      建议在安装Python(x,y)之前卸载任何其他Python发行版。

    • Enthought Canopy使用MSI安装程序,可以安装到Program Files\Enthoughthome\AppData\Local\Enthought\Canopy\App,分别适用于所有用户或单个用户。更新较新的安装可以使用内置的更新工具。请查看他们的文档
    • ActiveState也使用MSI,因此可以在旧版本上安装较新的版本。请查看他们的安装说明

      在Windows上,ActivePython 2.7不能与其他Python 2.7安装共存(例如,从python.org构建的Python 2.7)。在安装ActivePython 2.7之前,请卸载任何其他Python 2.7安装。

    • Sage建议你在虚拟机中安装,并提供一个可以用于此目的的Oracle VirtualBox镜像文件。升级通过发出sage -upgrade命令内部处理。
    • Anaconda可以通过使用conda命令进行更新

      conda update --all
      

      Anaconda/Miniconda允许用户创建环境来管理多个Python版本,包括Python-2.6、2.7、3.3、3.4和3.5。当前的Anaconda/Miniconda根安装基于Python-2.7或Python-3.5。

      Anaconda可能会干扰其他Python安装。安装使用MSI安装程序。 [更新: 2016-05-16] Anaconda和Miniconda现在使用.exe安装程序,并提供禁用Windows PATH和注册表更改的选项。

      因此,根据安装方式和安装时选择的选项,Anaconda/Miniconda可以在不干扰现有Python安装的情况下安装。如果使用.exe安装程序,并且没有禁用更改Windows PATH和注册表的选项,那么任何以前的Python安装将被禁用,但简单地卸载Anaconda/Miniconda安装应该会恢复原来的Python安装,除了可能Windows注册表中的Python\PythonCore键。

      无论安装选项如何,Anaconda/Miniconda都会进行以下注册表编辑:HKCU\Software\Python\ContinuumAnalytics\,包含以下键:HelpInstallPathModulesPythonPath - 官方Python也会注册这些键,但在Python\PythonCore下。此外,Anaconda/Miniconda的卸载信息也会被注册。除非在安装过程中选择“与Windows注册”选项,否则不会创建PythonCore,因此像Visual Studio的Python工具等集成不会自动看到Anaconda/Miniconda。如果启用了注册Anaconda/Miniconda的选项,那么我认为你现有的Python Windows注册表键将被更改,卸载可能不会恢复它们。

    • WinPython的更新,我认为可以通过WinPython控制面板处理。
    • PortablePython不再开发的。它没有更新方法。可能可以将更新解压到一个新目录中,然后将App\lib\site-packagesApp\Scripts复制到新安装中,但如果这不行,可能需要重新安装所有包。使用pip list查看已安装的包及其版本。有些是通过PortablePython安装的。如果没有安装pip,可以使用easy_install pip来安装。
  2. 如果提问者有2.7.x并想安装不同的版本,例如<=2.6.x或>=3.x.x,那么并排安装不同版本是可以的。你必须选择哪个版本的Python(如果有的话)与*.py文件关联,以及你希望在路径中使用哪个版本,尽管如果你使用BASH,你应该能够设置不同路径的shell。根据我所知,2.7.x与2.6.x是向后兼容的,所以我认为并排安装不是必要的,但Python-3.x.x则不向后兼容,所以我建议将Python-2.7放在你的路径中,并将Python-3作为可选版本,通过创建一个名为python3的可执行文件快捷方式(这是Linux上常见的设置)。Windows上官方Python的默认安装路径是:

    • C:\Python33用于3.3.x(最新2013-07-29)
    • C:\Python32用于3.2.x
    • &c.
    • C:\Python27用于2.7.x(最新2013-07-29)
    • C:\Python26用于2.6.x
    • &c.
  3. 如果提问者不是在更新Python,而只是更新包,他们可能希望查看virtualenv,以保持不同版本的包与他们的开发项目分开。Pip也是一个很好的工具来更新包。如果包使用二进制安装程序,我通常会在安装新包之前卸载旧包。

希望这能消除任何困惑。

撰写回答