如何更新 Python?

Posted

技术标签:

【中文标题】如何更新 Python?【英文标题】:How to update Python? 【发布时间】:2013-02-12 17:16:57 【问题描述】:

我从 2012 年初开始安装 2.7 版。我无法就是否应该在安装最新版本之前完全卸载并擦除此版本达成任何共识。

“软”-删除旧版本?硬删除/擦拭旧版本?在顶部安装?

我在某处看到了一个特殊的安装/升级过程,它使用 Python 安装的“分段”方法,将不同的版本分开和分开,但可以正常工作。不确定这是否是事实上的标准方式。

我还想知道 Revo 是否过于热心,可能会导致清除仍然需要的剩余部分(如环境/PATH 变量)出现问题。

(Win7 x64,32 位 Python)

【问题讨论】:

2.7 仍然是 2.x 系列中的最新版本。 3.x 是向后不兼容的。如果你想升级到当前的 2.7 版本,我就安装在上面。 【参考方案1】: 更新:2018-07-06

这篇文章已经有将近 5 年的历史了! Python-2.7 will stop receiving official updates from python.org in 2020。另外,Python-3.7 has been released。查看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 comments below,这些答案适用于相同的位版本,我的位版本是指 64 位和 32 位。例如,这些答案适用于从 64 位 Python-2.7.10 更新到 64 位 Python-2.7.11,iesame 位版本。虽然可以同时安装两个不同位版本的 Python,但这需要一些技巧,所以我将把这个练习留给读者。如果你不想破解,我建议如果切换位版本,请先删除另一个位版本。

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

TL;DR

使用Anaconda or miniconda,然后只需执行conda update --all 以保持每个conda 环境更新, official Python主要版本(例如 2.7.5),只需安装旧版本(例如 2.7。 4)、 official Python主要版本(例如 3.3),与旧版本并排安装,将路径/关联设置为指向主导(eg 2.7),其他的快捷方式(eg 在 BASH $ ln /c/Python33/python.exe python3)。

答案取决于:

    如果 OP 有 2.7.x 并且想要安装更新版本的 2.7.x,那么

    如果使用official Python website中的MSI installer,只需安装旧版本,安装程序会发出警告,它将删除并替换旧版本;在“控制面板”中查看“已安装程序”前后确认旧版本已被新版本替换;较新版本的 2.7.x 向后兼容,因此这是完全安全的,因此恕我直言,永远不需要 2.7.x 的多个版本。 如果从源代码构建,那么您可能应该在一个新的、干净的目录中构建,然后在新构建通过所有测试并且您确信它已成功构建后将您的路径指向新构建,但您可能希望保留旧版本,因为从源代码构建可能偶尔会出现问题。见我的guide for building Python x64 on Windows 7 with SDK 7.0。 如果从Python(x,y) 等发行版安装,请查看他们的网站。 Python(x,y) 已被放弃。 我相信可以在 Python(x,y) 中使用其包管理器处理更新,但 updates are also included on their website。我找不到具体的参考资料,所以也许其他人可以谈论这个。类似于 ActiveState 并且可能是 Enthought,Python (x,y) 明确指出它与 Python 的其他安装不兼容:

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

    Enthought Canopy 使用 MSI 并将分别为所有用户或每个用户安装到 Program Files\Enthoughthome\AppData\Local\Enthought\Canopy\App。使用内置更新工具更新较新的安装。见他们的documentation。 ActiveState 也使用 MSI,因此可以在较旧的安装之上安装较新的安装。见他们的installation notes。

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

    Sage 建议您将其安装到虚拟机中,并提供可用于此目的的 Oracle VirtualBox 映像文件。通过发出sage -upgrade 命令在内部处理升级。

    Anaconda 可以是updated by using the conda command:

    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 和注册表更改的选项。

    因此,根据安装方式和安装期间选择的选项,可以在不中断现有 Python 安装的情况下安装 Anaconda/Miniconda。如果使用了.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 Control Panel 处理。 PortablePython不再开发它没有更新方法。可能更新可以解压缩到一个新目录,然后App\lib\site-packagesApp\Scripts 可以复制到新安装,但如果这不起作用,则可能需要重新安装所有软件包。使用pip list 查看安装了哪些软件包及其版本。有些是由 PortablePython 安装的。如果未安装 pip,请使用easy_install pip 安装。

    如果 OP 有 2.7.x 并且想要安装不同的版本,例如 =3.x.x,那么并排安装不同的版本是可以的。您必须选择要与 *.py 文件关联的 Python 版本(如果有)以及您希望在路径上使用的 Python 版本,但如果使用 BASH,您应该能够设置具有不同路径的 shell。 AFAIK 2.7.x 与 2.6.x 向后兼容,因此不需要并行安装,但是 Python-3.xx 不向后兼容,所以我的建议是将 Python-2.7 放在您的路径上并拥有Python-3 通过创建一个名为 python3 的可执行文件的快捷方式成为可选版本(这是 Linux 上的常见设置)。 Windows 上的官方 Python 默认安装路径是

    C:\Python33 for 3.3.x(最新 2013-07-29) 3.2.x 的 C:\Python32 &c. C:\Python27 for 2.7.x(最新 2013-07-29) C:\Python26 用于 2.6.x &c.

    如果 OP 不更新 Python,而只是更新包,他们可能希望查看 virtualenv 以将特定于其开发项目的不同版本的包分开。 Pip 也是更新软件包的好工具。如果软件包使用二进制安装程序,我通常会在安装新软件包之前卸载旧软件包。

我希望这能消除任何困惑。

【讨论】:

嗨,马克,我有一个新手问题。您认为从 2.7.x 升级到 3.3.x 真的很重要吗?我开始使用 python 并安装了旧版本,但是从一开始我就想学习最新版本(除非只有非常小的差异)。你对此有何看法?感谢您的帮助。 我会同时使用这两个。如果你在 MS Windows 上,你将进入你的根文件夹 C:\Python27C:\Python33,如果你在 Mac 上,你会看到 /Library/Frameworks/Python/Versions/2.7.x/Library/Frameworks/Python/Versions/3.3.x,如果你在 Linux 上,你可能已经有两个安装。传统是使用 Python-2.7 并将 Python-3.3 的二进制文件符号链接到 python33。另请参阅 Python2orPython3 和 Python 2 vs Python 3。我个人懒得切换到 3.3。 感谢您的详细解答!使用 2.7,当一个是 32 位和一个是 64 位时,安装旧版本不起作用。我在“程序和功能”中有两个条目,都指向 C:\Python27。您是否愿意在您的答案中添加人们应该只用 32 覆盖 32 和用 64 覆盖 64?谢谢! @cxw 感谢您的反馈。如果您确实想同时拥有 32 和 64,有一些方法。可能最简单的方法是从命令行使用 32 位版本的 "admin" install 到 C:\Python27_x86msiexec /a "python-2.7.11.msi" TARGETDIR="C:\Python27_x86" /qn /l*v python27_x86_install.log。另一种选择是build from source,或尝试Bootstrap Python。 MSI 安装程序说它将替换 2.7 文件夹,但是,如果您将其他脚本存储在 2.7 根文件夹中,它不会删除它们;)【参考方案2】:

最好的解决方案是在多个路径中安装不同的 Python 版本。

例如。 C:\Python27 用于 2.7,C:\Python33 用于 3.3。

阅读本文了解更多信息:How to run multiple Python versions on Windows

【讨论】:

我就是这样做的。我运行 python 2.7.xx 和 3.5.xx 以及 IronPython 2.7.xx 的 32 位和 64 位版本。我使用Eclipse进行开发,调试时选择python路径。运行脚本时,我只需将路径设置为我希望使用的解释器版本。将 3.5.0 更新到 3.5.3 提供了一个简单的更新选项,而不是新安装。【参考方案3】:

官方 Python .msi 安装程序旨在替换:

任何以前的微版本(在 x.y.z 中,z 是“微”),因为它们保证向后兼容和二进制兼容 任何微版本的“快照”(从源代码构建)安装

快照安装程序旨在用较低的微版本替换任何快照。

(见responsible code for 2.x,for 3.x)

任何其他版本不一定兼容,因此与现有版本一起安装。如果您想卸载旧版本,则需要手动执行此操作。并卸载您拥有的任何第 3 方模块:

如果您从 bdist_wininst 包 (Windows .exes) 安装了任何模块,请在卸载版本之前卸载它们,否则如果有自定义逻辑,卸载程序可能无法正常工作 使用setuptools/pip 安装并驻留在Lib\site-packages 中的模块之后可以删除 您为每个用户安装的软件包(如果有)驻留在 %APPDATA%/Python/PythonXY/site-packages 中,同样可以删除

【讨论】:

【参考方案4】:

我一直只是在上面安装新版本,从来没有任何问题。请确保您的路径已更新以指向新版本。

【讨论】:

over top安装时是否保留了我下载的pygame、bs4、lxml等外部模块?

以上是关于如何更新 Python?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python中更新GUI窗口?

如何在 Python 中更新 Tcl/Tk?

如何在Anaconda中把python环境更新更高版本

如何使用 python 更新 yaml 文件?

如何使用 Python 更新 JSON 文件?

如何更新 Python?