【问题标题】:How to install Python 3.8.1 on RHEL 8 UBI container with dnf?如何使用 dnf 在 RHEL 8 UBI 容器上安装 Python 3.8.1?
【发布时间】:2020-01-08 20:39:13
【问题描述】:

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


我想输入:

dnf -y install pythondnf -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/

【问题讨论】:

  • 肯定有linux downloads
  • 可能值得使用虚拟环境或类似的东西。我个人喜欢康达。
  • 发送的链接:“肯定有 linux 下载”是源代码 tarball 列表。这不是我要找的。我正在寻找适用于 Linux 的编译二进制文件,我不确定您为什么发布此链接。您发布了一个指向源代码的链接,声称它是一个 linux 二进制下载。
  • 康达臃肿。大大大大膨胀。用例是我正在使用的,是一个我希望保持小且没有膨胀的容器。我只是想添加一个包含 Python 3.8.1 二进制版本的 repo,然后运行:#dnf -y install python 或 #dnf -y install python38。
  • 此外,如果我确实使用了 Virtualenv,它将从哪里提取 Python 3.8.1?以及如何?

标签: python fedora rhel


【解决方案1】:

两个注意事项:我不确定您的容器是如何设置的。您已将其标记为 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

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

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

python3 -V

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

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

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

【讨论】:

  • 也许还注意到许多发行版确实有预编译包,但 Python.org 不是它们的分发点。对于基于 Debian 的系统,请查看官方存储库,并回退到第三方提供的非官方预发布或自定义构建。
  • 我确实在第二段中回避了这些事情,但也许是含蓄而不是明确。为了清楚起见,我进行了编辑。这里不关心基于 Debian 的系统;这篇文章只涉及 Red Hat 发行版。
猜你喜欢
  • 2020-05-26
  • 1970-01-01
  • 2020-12-18
  • 2011-09-20
  • 2016-03-23
  • 2022-01-06
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多