首页 > 解决方案 > 如何使用 dnf 在 RHEL 8 UBI 容器上安装 Python 3.8.1?

问题描述

如何在 Linux 上安装和运行 Python 3.8.1?Python.org 不提供 Python 3.8.1 的 Linux 二进制文件。


我想输入:

dnf -y install python或者dnf -y install python38

并让它在我想要保持较小的最小容器内的我的 RHEL 8.0 或 8.1 上安装 Python 3.8.1。

我将如何做到这一点?

我什至没有在 python.org 上看到 Python for Linux 的下载。


人们在 Linux 上使用 Python 吗?

没有可从 Python.org 下载的 Linux 二进制文件


我到处搜索(互联网搜索),找不到在最小容器上轻松安装 Python 3.8.1 的方法。

我不想下载源代码并进行编译,因为它是一个小容器,我试图在没有太多开销的情况下保持小。


参考:

https://www.python.org/downloads/release/python-381/

标签: pythonfedorarhel

解决方案


两个注意事项:我不确定您的容器是如何设置的。您已将其标记为 RHEL 和 Fedora。这是两个独立的分布。我可以评论 Fedora。

首先,是的,Python 在 GNU/Linux 世界中被大量使用。大多数发行版使用它作为构建系统及其软件包的语言之一。Linux 服务器是 Python 唯一官方推荐的服务器,或者我已经阅读过(如果我能找到它,稍后将使用源代码进行编辑)。Python.org 确实有 Linux 下载,但在源文件中,打包在压缩的 tarball 中。这可以促进首先搜索发行版包管理器以获得发行版兼容性(因为在发行版的存储库中应该意味着版本已经过审查);除非另有说明,否则这些包都是预编译的。这也意味着文件与发行版无关——不需要 .DEB、.RPM...

Fedora:帖子中没有列出 Fedora 版本,但至少 Fedora 31 有一个开发版本,正如他们所说,是 RPM 格式的 Python 3.8.1。(Fedora 32 计划在系统级别拥有 Python 3.8。)您可以通过以下方式获得它:

sudo dnf install python38

确保不要覆盖python或python3的系统变量;这个错误可能导致不同程度的系统性问题。安装后,您可以在任何您喜欢的目录中创建虚拟环境:

python3.8 -m venv <venv_name>

要激活 venv,请使用:

. <path/to/venv>/<venv_name>/bin/activate

您可以轻松设置别名或符号链接。激活 venv 后,Python 3.8.x 将是调用解释器时使用的 Python 版本。您应该在 PS1 左侧的括号中看到您的 venv_name。要停用,请使用:

deactivate

venv_name 应该从 PS1 中删除,使其恢复正常。检查 Python 版本应返回系统级 Python 版本。

如果您在激活之前和之后检查您的 Python 版本,它应该是不同的。

python3 -V

此软件包可能已发送到下游,也可能未发送到 RHEL。如果您有可用的包但想要完整的 Python 堆栈,或者如果它在 RHEL 的基线存储库中不可用,您可能需要获取源文件并解压缩 tarball

替代方案是检查其他存储库,查看其他人从源代码编译的 RPM,或者检查 flatpak(我还没有这样做)。

最后一点:从源代码编译不应该产生更大的 Python 二进制文件。在提取所需内容后,您可以删除任何不必要的额外内容,例如用于编译的原始存档文件。动作本身只会存储在易失性内存中,而不是您的磁盘上。


推荐阅读