python - 如何使用 dnf 在 RHEL 8 UBI 容器上安装 Python 3.8.1?

标签 python fedora rhel

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


我想输入:

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

最佳答案

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

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

deactivate

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

如果你检查激活前后的Python版本,应该是不同的。

python3 -V

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

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

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

关于python - 如何使用 dnf 在 RHEL 8 UBI 容器上安装 Python 3.8.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59653487/

相关文章:

python - 使用 Bottle (或 flask 或类似物)流式上传文件

python - Django 子域

python - 从python中的dict更新数据类字段

调用 adb start-server 时 Linux 系统死机

c - 为什么 gdb 提示我的核心文件太小,然后无法产生有意义的堆栈跟踪?

linux - RHEL7 : How to solve “import read failed(2)” ?

python - 应用程序在本地机器上运行良好,但在 Pythonanywhere.com 上运行不正常

Rstudio 不启动 "Unable to determine real path of R script"由于 R 编译期间的先前错误

c - gcc ld 错误 "libgcov.a(_gcov_merge_add.o) is referenced by DSO"

firewall - 在 Centos7 中向 firewalld 添加规则以允许来自服务器的所有流量