在 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 解释器的入口点,但您可以覆盖为什么 bash
或 busybox 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