在 docker 镜像中安装 Python3.9 和 pip(而不是 python 3.8)

Posted

技术标签:

【中文标题】在 docker 镜像中安装 Python3.9 和 pip(而不是 python 3.8)【英文标题】:Installing Python3.9 and pip in docker image (and not python 3.8) 【发布时间】:2021-09-12 01:57:15 【问题描述】:

我正在尝试构建一个 docker 映像来运行一些测试,但我无法说服 ubuntu 安装 python 3.9 和 pip,而不是 python3.8。

启动Docker unbuntu:latest,安装python3.9没问题,但是没有pip。好的,我会尝试按照所有答案的建议进行操作:

apt-get install python3-pip

但这会安装 **all ** of python3.8,以及其他垃圾。现在,它在这一点上确实有效,但它让我在我希望尽可能小的图像中有一个完全不必要的 python 版本。

不,之后卸载 3.8 不起作用,它会删除 pip。

我怎样才能得到python3.9,有pip,没有python3.8?

我确实看到了这个:How to install pip for Python 3.9 on Ubuntu 20.04

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

当您运行脚本时,它会抱怨需要 distutils。没问题:

sudo apt-get install python3-distutils

python3-distutils 依赖什么?为什么,python3.8,当然!

【问题讨论】:

您是否考虑过使用python base images 之一?它们专为与 Python 项目一起使用而定制。在大多数情况下,我个人使用-alpine 图像。它不会变得更简单和更小。 【参考方案1】:

ubuntu 将系统 python 包存储在/usr/lib/python3/dist-packages 并共享给所有 python3 版本。

在 ubuntu 20.04 容器内 (docker run -ti ubuntu:20.04):

apt-get update
apt-get install software-properties-common
add-apt-repository ppa:deadsnakes/ppa
# Install py39 from deadsnakes repository
apt-get install python3-9
# Install pip from standard ubuntu packages
apt-get install python3-pip

然后您可以使用python3.9 -m pip ... 调用pip,但要小心,所有内容都安装在/usr/lib/python3/dist-packages 中。

但是,如果您只需要一个 dockerized 版本的 python3.9,最好使用official python docker image,可以使用 debian 或 alpine(非常轻)作为基础。两者都使用标准的lib/pythonx.y/site-packages

默认情况下,这些图像定义了 python 解释器的入口点,但您可以覆盖为什么 bashbusybox sh (alpine)。

为 debian 编辑

launchpad 存储库基于 ubuntu 发行版构建。使用过度分发会导致库不兼容。

在 deadsnakes ubuntu/xenial 存储库中,python3.9 需要 libssl1.0.0,但 debian/buster 提供 libssl1.1

在debian/buster中获取python3.9最简单的方法是使用官方镜像(docker run -ti python:3.9-buster)。否则,构建它...

【讨论】:

tl;dr 需要 PPA,因为安装新的 Python 将使用 Ubuntu 内置 Python 安装版本 对于其他人来说,这似乎不适用于基于 Debian(破坏者)的 docker 映像。 在命令add-apt-repository ppa:deadsnakes/ppa 之后,您需要再次运行命令:apt-get update(因为此时会实现版本)

以上是关于在 docker 镜像中安装 Python3.9 和 pip(而不是 python 3.8)的主要内容,如果未能解决你的问题,请参考以下文章

在 Docker 的 CentOS7 镜像 中安装 mysql

在 Docker 的 CentOS7 镜像 中安装 mysql

如何在我的 docker 镜像中安装 python-tk

在docker中安装mysql

如何在 Alpine linux docker 镜像中安装 oracle jdk11?

docker 在容器中安装yum等软件