如何在Windows中安装多个版本的Python?

How to install multiple versions of Python in Windows?

直到最近,我只使用过一个版本的 Python 并且时不时地使用虚拟环境。现在,我正在使用一些需要旧版本 Python 的库。所以,我很困惑。任何人都可以解决我的一些困惑吗?

  1. 如何安装多个 Python 版本?

我最初有 Python 版本 3.8.x 但上个月升级到 3.10.x。目前我的电脑上只有那个版本。

我想安装 Python 3.8.x 版本之一,然后转到 https://www.python.org/downloads/。它列出了很多版本和子版本,如 3.6、3.7、3.8 等,从 3.8.1、3.8.2 到 3.8.13。我应该选择哪一个?

我实际上继续使用 3.8.12 并在页面上下载了 Tarball:https://www.python.org/downloads/release/python-3812/

我提取了 tarball (23.6MB) 并创建了一个包含 setup.py 文件的文件夹。

Python3.8.12现在安装了吗?单击 setup.py 文件只会使终端闪烁一秒钟。

我还有几个问题。希望他们不会让我失望。我只是很困惑,找不到合适的答案。

  1. 为什么 Python 对库和包等的确切版本有如此严重的依赖性?

比如这个问题 。这似乎对初学者很不友好。略有不匹配的包 version 可以阻止任何程序 运行.

  1. 虚拟环境是否复制主要 Python 安装中的所有文件来创建虚拟环境,然后在其中安装特定的包?因为几乎所有的项目都需要有自己的虚拟环境,这不是在重复浪费很多资源吗。

您的问题有点依赖于“所有其他软件ware”。例如,正如@leiyang 指出的那样,如果您在 vanilla CPython(标准 Windows Python)上使用 conda 与仅使用 pip,答案将会不同.

我还假设您实际上在 Windows,因为在 Linux 我建议您查看 pyenv。有一个 pyenv-win,可能值得研究,但我自己不使用它,因为如果你还想要 (mini)conda 环境,它就不会发挥得很好。

1. (a) 如何安装多个 Python 版本?

只需下载各种安装程序并将它们安装在合理的位置。例如。 Python 3.9 的“C:\Program Files\Python39”,或其他允许安装 software.

的位置

不过不要让 Python 将自己添加到 PATH 中,因为那样只会找到最后一个这样做的版本,而且确实会使事情变得混乱。

此外,您可能希望始终如一地使用虚拟环境,因为这会将特定项目与特定 Python 版本非常明确地联系起来,避免将来出现混淆或问题。

1. (b) "3.8.1, 3.8.2 till 3.8.13" 我应该选哪个?

始终选择最新的 3.x.y,因此如果 Windows 有 3.8.13,但没有 3.8.14,请选择那个。检查该版本是否实际适用于您的操作系统,有时一个 OS 有更高版本,但另一个没有。

原因是在像 3.6 和 3.7 这样的版本之间,可能会发生重大变化,从而改变 Python 的工作方式。通常,会有 backwards 兼容性,但某些更改可能会破坏您的某些软件包的工作方式。但是,当升级到次要版本时,不会有任何此类重大更改,只有不会妨碍现有内容的修复和添加。从 2.x 到 3.x 的变化只有在语言本身经历重大变化时才会发生,而且很少发生(也许永远不会再发生,这取决于你问的是谁)。

“无次要版本更改问题”的一个例外当然是如果您 运行 一些脚本非常具体地依赖于 3.8.6 中损坏的东西,但在 3.8.7+ 中没有修复(举个例子)。然而,这是非常糟糕的编码,依赖于损坏的东西而不是稍后修复它,所以只有在你没有其他办法的情况下才继续这样做。否则,只是您所追求的任何版本的最新次要版本。

另外:确保选择正确的体系结构。如果没有特定要求,只需选择 64 位,但如果您的脚本需要在二进制级别与其他已安装的 software 交互,则可能需要您安装 32 位 Python(并且32 位包)。如果您没有这样的要求,64 位允许更多内存访问,并且在现代计算机上还有一些其他好处。

2。为什么 Python 对库和包等的确切版本有如此严重的依赖性?

不仅仅是Python,很多语言都是如此。 Python 的最终用户更容易看到它,因为您 运行 它是一种解释型语言。它只是在最后一刻编译的,在计算机上 运行ning on。

这样做的优点是代码可以 运行 在各种计算机和操作系统上运行,但缺点是您需要 运行 运行它的正确环境。对于使用 C++ 等语言编写代码的人来说,他们在编写代码时必须处理这个问题,但针对的环境数量要少得多(尽管仍有 运行 次需要应对,DirectX 版本等。 ).其他语言只是将所有内容汇总到正在分发的程序中,而 Python 脚本本身可能很小。这是一个设计选择。

虽然有很多工具可以帮助您自动化该过程,但 well-written 软件包将使该过程非常轻松。如果您觉得 Python 说到这里很不稳定,那很可能是您使用的包或脚本的原因,而不是真正的语言。该语言的唯一缺点是它让开发人员很容易把你弄得一团糟,让你的生活很难满足特定的要求。

寻找替代方案,但如果您无法避免使用特定的脚本或包,一旦您弄清楚如何安装或使用它,将其记录下来或更好,将其自动化,这样您就不必考虑再说一遍。

3。虚拟环境是否复制主要 Python 安装中的所有文件来创建虚拟环境,然后在其中安装特定的包?因为几乎所有的项目都需要有自己的虚拟环境,这不是在重复中浪费了很多资源吗?

不是全部,而是相当一部分。但是,您仍然需要系统上存在原始安装。此外,您不能选择一个虚拟环境并将其放在其他地方,即使是在同一台 PC 上也是如此没有进行一些仔细的更改(通常最好重新创建它)。

你是对的,这有点浪费 - 但这是一个艰难的选择。

或者 Python 会更复杂,必须在单一环境中管理许多不同版本的包(Java 开发人员将能够告诉您 war 相关故事, 与他们的依赖管理 - 或者一旦他们自己得到它就抒情地谈论它)。

或者你得到我们所拥有的:有点浪费,但最终磁盘空间比你的时间便宜很多。而且与您的时间不同,磁盘空间几乎可以无限扩展。

虽然您可以在非常相似的项目之间共享虚拟环境,但特别是如果您的代码是从其他人那里获得的,最好不必担心,只需为该项目放弃几十 MB。从好的方面来说:你可以只删除一个虚拟环境目录,这几乎可以摆脱所有的东西。 PyCharm 等一些应用程序可能记得它曾经在那里,但除此之外,虚拟环境已经消失了。

只需安装它们。您可以并排放置任意数量的 Python 个装置。除非你需要有 2 个不同的次要版本,例如 3.10.1 和 3.10.2,否则不需要做任何特殊的事情。 (如果你确实需要它,那么你不需要任何建议。)只需为每个设置单独的快捷方式。

请记住,您必须在每个版本 中安装您需要的任何第 3 方库。为此,请导航到要安装的版本中的 Scripts 文件夹,然后从该文件夹导航到 运行 pip

Python 的第 3 方库是 open-source,来自发布时间表不一定与 Python 一致的项目。所以他们不会总是有与最新版本 Python.

一致的可用版本

通常您可以通过从 Christoph Gohlke 的站点下载非官方二进制文件来解决这个问题。 Google Python Gohlke.

  1. 使用 python.org 中的 windows 可执行安装程序安装 Python。如果版本是 3.x.y,请使用具有 windows 可执行安装程序的最高 y。除非您的机器很旧,否则请使用 64 位版本。 不要 让他们将 python 添加到您的 PATH 环境变量中,但是 只有一个 安装有它 安装 python 启动器 py。这将帮助您使用多个版本。参见例如here.

  2. Python本身没有。但有些 modules/libraries 会。尤其是那些不是纯粹用 Python 编写但包含用 C(++) 编写的扩展的。原因是 在 ms-windows 上编译程序可以是真正的 PITA。与具有 Linux 的 UNIX 类操作系统不同,ms-windows 不附带开发工具作为标准。它也没有像样的包管理。由于官方 Python 安装程序是使用 Microsoft 工具构建的,因此您 需要 也使用带有 C(++) 扩展的安装程序。在 2015 年之前,您甚至必须使用 与 Python 完全相同的编译器版本。这仍然是一个好主意,但不再是绝对必要的。因此,开发人员为每个支持的 Python 版本发布二进制包是一项巨大的工作量。他们更容易说“需要 Python 3.x”。