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



我正试图构建一个docker映像来运行一些测试,但我很难说服ubuntu安装python 3.9和pip,而不是python 3.8。

启动Docker ununtu:最新,安装python3.9没有问题,但没有pip。好的,我会按照所有答案的建议:

apt-get install python3-pip

但这安装了**所有**的python3.8,以及其他垃圾。现在,它确实在这一点上起作用,但在一个我想尽可能小的图像中有一个完全不必要的python版本,这让我很恼火

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

我怎么能得到蟒蛇3.9,有pip,没有蟒蛇3.8?

我确实看到了:如何在Ubuntu 20.04 上安装Python 3.9的pip

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

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

sudo apt-get install python3-distutils

python3 distutils依赖于什么?为什么,蟒蛇3.8,当然!

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中。

但是,如果你只需要一个python3.9的码头化版本,最好使用官方的python docker图像,以debian或alpine(非常轻(为基础。两者都使用标准lib/pythonx.y/site-packages

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

为debian编辑

launchpad存储库是在ubuntu发行版的基础上构建的。在过度分发上使用可能导致库不兼容。

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

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

相关内容

  • 没有找到相关文章

最新更新