141

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

“软”——删除旧版本?硬删除/擦拭旧版本?安装在上面?

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

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

(Win7 x64,32 位 Python)

4

4 回答 4

108
更新:2018-07-06

这篇文章现在已经有将近 5 年的历史了!Python-2.7 将在 2020 年停止接收来自 python.org 的官方更新。此外,Python-3.7 已发布。查看Python-Future,了解如何使您的 Python-2 代码与 Python-3 兼容。为了更新 conda,文档现在建议conda update --all在您的每个 conda 环境中使用来更新该版本的所有包和 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
  • 通过禁用更改 Windows和注册表的选项, AnacondaMiniConda可以与现有的 Python 安装一起使用。提取后,在您的或从 PyPI 安装 conda中PATH创建一个符号链接。然后在Anaconda/Miniconda 根 bin 文件夹中创建另一个符号链接。现在 Anaconda/Miniconda 就像 Ruby RVM 一样。只需使用启用 Anaconda/Miniconda。condabinconda-activateactivateconda-activate root
  • 不再开发或维护可移植 Python。

TL;博士

  • 使用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. 如果 OP 有 2.7.x 并且想要安装更新版本的 2.7.x,那么

    • 如果使用Python 官方网站MSI 安装程序,只需安装旧版本,安装程序会发出警告,它将删除并替换旧版本;在“控制面板”中查看“已安装程序”前后确认旧版本已被新版本替换;较新版本的 2.7.x 是向后兼容的,因此这是完全安全的,因此恕我直言,永远不需要 2.7.x 的多个版本。
    • 如果从源代码构建,那么您可能应该在一个新的、干净的目录中构建,然后在新构建通过所有测试并且您确信它已成功构建后将您的路径指向新构建,但您可能希望保留旧的构建,因为从源代码构建可能偶尔会出现问题。请参阅我的使用 SDK 7.0 在 Windows 7 上构建 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,因此可以在较旧的安装之上安装较新的安装。查看他们的安装说明

      其他 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可以使用以下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安装程序并提供禁用 WindowsPATH和注册表更改的选项。

      因此 Anaconda/Miniconda 可以在不中断现有 Python 安装的情况下安装,具体取决于它的安装方式和安装期间选择的选项。如果使用安装程序并且没有.exe禁用更改 WindowsPATH和注册表的选项,则任何以前的 Python 安装都将被禁用,但只需卸载 Anaconda/Miniconda 安装即可恢复原始 Python 安装,可能 Windows 注册表项除外。Python\PythonCore

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

    • 我认为WinPython更新可以通过WinPython 控制面板来处理。
    • PortablePython不再被开发。它没有更新方法。可能更新可以解压缩到一个新目录,然后App\lib\site-packages可以App\Scripts复制到新安装,但如果这不起作用,则可能需要重新安装所有软件包。用于pip list查看安装了哪些软件包及其版本。有些是由 PortablePython 安装的。easy_install pip如果未安装 pip,请使用它来安装。
  2. 如果 OP 有 2.7.x 并且想要安装不同的版本,例如<=2.6.x 或 >=3.xx,那么并排安装不同的版本就可以了。您必须选择要与文件关联的 Python 版本(如果有)以及您希望在路径上使用的 Python 版本,但如果使用BASH*.py,您应该能够设置具有不同路径的 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)
    • C:\Python32 用于 3.2.x
    • &C。
    • C:\Python27 用于 2.7.x(最新 2013-07-29)
    • C:\Python26 用于 2.6.x
    • &C。
  3. 如果 OP 不更新 Python,而只是更新包,他们可能希望研究virtualenv以将特定于其开发项目的不同版本的包分开。Pip也是更新软件包的好工具。如果软件包使用二进制安装程序,我通常会在安装新软件包之前卸载旧软件包。

我希望这可以消除任何困惑。

于 2013-07-30T18:20:15.977 回答
5

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

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

阅读本文了解更多信息:如何在 Windows 上运行多个 Python 版本

于 2013-02-27T02:34:53.133 回答
5
  • 官方 Python .msi 安装程序旨在替换:

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

(参见2.x 的负责代码对于 3.x

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

  • 如果您从bdist_wininst包 (Windows .exe) 中安装了任何模块,请在卸载版本之前将其卸载,否则如果具有自定义逻辑,卸载程序可能无法正常工作
  • setuptools与/pip一起安装的模块Lib\site-packages可以在之后删除
  • 您为每个用户安装的软件包(如果有)驻留在%APPDATA%/Python/PythonXY/site-packages其中并且同样可以删除
于 2018-05-31T03:48:19.267 回答
1

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

于 2013-02-27T02:17:17.180 回答