如何在Windows中安装多个版本的Python?
How to install multiple versions of Python in Windows?
直到最近,我只使用过一个版本的 Python 并且时不时地使用虚拟环境。现在,我正在使用一些需要旧版本 Python 的库。所以,我很困惑。任何人都可以解决我的一些困惑吗?
- 如何安装多个 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
文件只会使终端闪烁一秒钟。
我还有几个问题。希望他们不会让我失望。我只是很困惑,找不到合适的答案。
- 为什么 Python 对库和包等的确切版本有如此严重的依赖性?
比如这个问题
。这似乎对初学者很不友好。略有不匹配的包
version 可以阻止任何程序 运行.
- 虚拟环境是否复制主要 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
.
使用 python.org
中的 windows 可执行安装程序安装 Python。如果版本是 3.x.y
,请使用具有 windows 可执行安装程序的最高 y
。除非您的机器很旧,否则请使用 64 位版本。 不要 让他们将 python 添加到您的 PATH
环境变量中,但是 只有一个 安装有它 安装 python 启动器 py
。这将帮助您使用多个版本。参见例如here.
Python本身没有。但有些 modules/libraries 会。尤其是那些不是纯粹用 Python 编写但包含用 C(++) 编写的扩展的。原因是 在 ms-windows 上编译程序可以是真正的 PITA。与具有 Linux 的 UNIX
类操作系统不同,ms-windows 不附带开发工具作为标准。它也没有像样的包管理。由于官方 Python 安装程序是使用 Microsoft 工具构建的,因此您 需要 也使用带有 C(++) 扩展的安装程序。在 2015 年之前,您甚至必须使用 与 Python 完全相同的编译器版本。这仍然是一个好主意,但不再是绝对必要的。因此,开发人员为每个支持的 Python 版本发布二进制包是一项巨大的工作量。他们更容易说“需要 Python 3.x”。
直到最近,我只使用过一个版本的 Python 并且时不时地使用虚拟环境。现在,我正在使用一些需要旧版本 Python 的库。所以,我很困惑。任何人都可以解决我的一些困惑吗?
- 如何安装多个 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
文件只会使终端闪烁一秒钟。
我还有几个问题。希望他们不会让我失望。我只是很困惑,找不到合适的答案。
- 为什么 Python 对库和包等的确切版本有如此严重的依赖性?
比如这个问题
- 虚拟环境是否复制主要 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
.
使用
python.org
中的 windows 可执行安装程序安装 Python。如果版本是3.x.y
,请使用具有 windows 可执行安装程序的最高y
。除非您的机器很旧,否则请使用 64 位版本。 不要 让他们将 python 添加到您的PATH
环境变量中,但是 只有一个 安装有它 安装 python 启动器py
。这将帮助您使用多个版本。参见例如here.Python本身没有。但有些 modules/libraries 会。尤其是那些不是纯粹用 Python 编写但包含用 C(++) 编写的扩展的。原因是 在 ms-windows 上编译程序可以是真正的 PITA。与具有 Linux 的
UNIX
类操作系统不同,ms-windows 不附带开发工具作为标准。它也没有像样的包管理。由于官方 Python 安装程序是使用 Microsoft 工具构建的,因此您 需要 也使用带有 C(++) 扩展的安装程序。在 2015 年之前,您甚至必须使用 与 Python 完全相同的编译器版本。这仍然是一个好主意,但不再是绝对必要的。因此,开发人员为每个支持的 Python 版本发布二进制包是一项巨大的工作量。他们更容易说“需要 Python 3.x”。