我已经使用 Ubuntu 20.04 几个月了,一切进展顺利,但是最近我遇到了 2 个需要开始支持的遗留应用程序,它们需要 Python 2。据我所知,我至少有以下选择:
- 返回 Ubuntu 18.04.5
- 在 Ubuntu 20.04 中安装 Python 2
- 尝试在 Ubuntu 20.04 中安装 Python 2,但仅限于虚拟环境中
- 使用虚拟机
我宁愿远离 VM 选项,因为我经常使用 GPU,而 GPU 不会通过 VM,而且我做了很多硬件/软件接口,使用 VM 可能会导致各种问题。另外,我一般不喜欢 VM(崩溃、鼠标/键盘/屏幕卡顿、性能缓慢等)。
说实话,我很少使用虚拟环境,但我可以承认,我并不倾向于使用此选项,因为我将要支持的 2 个旧版应用程序会在各个地方调用 Python(调用启动新进程的文件等),我怀疑虚拟环境无法处理这些情况。此外,我还读过有关在虚拟环境中使用整个独立版本的 Python 的问题,例如如何在 Ubuntu 20.04 上创建 python2.7 虚拟环境。
Ubuntu 18.04.5 很棒,但我现在不想回溯,这让我考虑安装 Python 2。在谷歌上快速搜索后,我发现很多网站解释了在 Ubuntu 20.04 中安装 Python 2 的步骤(例如https://linuxconfig.org/install-python-2-on-ubuntu-20-04-focal-fossa-linux或者https://www.vultr.com/docs/how-to-install-python-2-on-ubuntu-20-04),其中大多数甚至包括如何使用update-alternatives
将python
默认设置为 Python 2 的说明,这对于我支持前面提到的遗留选项之一来说是必要的。
我觉得很奇怪,像安装整个其他版本的 Python 这样重要的事情不会对 Ubuntu 造成问题,因为当今许多 Linux 实用程序都使用 Python。另一方面,Python 2 是由 Canonical 提供的官方软件包https://packages.ubuntu.com/focal/python2而且他们通常非常擅长软件包集成。
目前我的问题是:
有谁在 Ubuntu 20.04 中安装了 Python 2 的人能解释一下这是否会导致问题吗?安装 Python 2 后,是否有一些常用应用程序无法运行?还有什么与此相关的“陷阱”我应该知道或注意吗?
如果我继续按照上述说明操作(
update-alternatives
将python
默认设置为 Python 2),是否会导致问题?与此附加步骤相关的任何“陷阱”是什么?有人尝试过在 Ubuntu 中配置 Python 2 虚拟环境(无需安装 Python 2 本机环境)吗?它真的像这个页面一样简单吗?https://computingforgeeks.com/how-to-install-python2-with-virtualenv-on-ubuntu/听起来是这样的?虚拟环境是否能支持调用其他脚本、使用
python
(预计是 Python 2)、跨/分叉其他进程等重要应用程序?如果 Ubuntu 20.04 上安装的原生 Python 2 和/或虚拟环境选项有问题,还有其他我没有在这里介绍的好选择吗?
答案1
- 有谁在 Ubuntu 20.04 中安装了 Python 2 的人能解释一下这是否会导致问题吗?安装 Python 2 后,是否有一些常用应用程序无法运行?还有什么与此相关的“陷阱”我应该知道或注意吗?
您可以这样做,但在不久的将来 Python 2 可能会出现问题 - 请关注我这篇文章的后面部分!
python2
默认安装应该python
等同于 Python 2 - 如果不是那么...
- 如果我继续按照上述说明操作(更新替代方法,使 Python 默认为 Python 2),是否可能导致问题?与此附加步骤相关的任何“陷阱”是什么?
已经有了此软件包 -python-is-python2
就是您想要的。安装 Python 2 后安装它。它将处理 的python
链接python2.7
。
- 有人尝试过在 Ubuntu 中配置 Python 2 虚拟环境(无需安装 Python 2 原生环境)吗?真的像这个页面一样简单吗?https://computingforgeeks.com/how-to-install-python2-with-virtualenv-on-ubuntu/听起来是这样的?虚拟环境是否能支持调用其他脚本、使用 Python(预计是 Python 2)、跨/分叉其他进程等重要应用程序?
我不使用普通的虚拟环境来获取与系统 Python 不同的 Python 安装。我使用派环境因为它会创建单独的 Python 用户空间安装。您将要需要构建依赖项python
并python2.7
安装-sudo apt build-dep python python2.7
应该这样做。
- 如果 Ubuntu 20.04 上安装的原生 Python 2 和/或虚拟环境选项有问题,还有其他我没有在这里介绍的好选择吗?
无论是本机安装还是 PyEnv 方法都不会破坏任何东西。但您需要注意一些事项。
本质上... Python 2 已死 - 无论是上游还是 PyPA PIP(程序pip install ...
)
(注意:有些发行版可能提供有限的支持 Python 2,但一切仍然依赖 Python 2 且没有迁移到 Python 3 的东西都应该被反对)
从四天前开始,Python PIP 将不再支持 Python 2,其底层pip
模块版本为 21.0。如果您按照 PyEnv 或单独的 Python 2 安装(与 System Python 分开)python-pip
进行安装,你将无法再获取 Python 2 的 Python 模块。
假设你正在处理一个遗留的 Python 2 程序,我强烈建议你为 Python 3 重写该程序。如果你必须维护这个遗留程序超过一两年(自 2020 年 EOL 日期以来),那么你将遇到大量问题 - 对 Python 2 的支持已在上游逐步淘汰,而 PIP 不再支持 Python 2,你将开始遇到一吨未来 Python 2 应用程序的维护将面临诸多问题。
为了最多程序将 Python 2 程序移植到 Python 3 并不是特别困难。如果你的依赖库(而不是底层的 Python 2 代码本身)仅有的Python 2 那么你将会遇到长期支持问题 - 你真的应该寻求替换/升级该过程。