如何将 Python 和 pip 或 conda 包添加到 DDEV

Jam*_*son 5 python docker ddev

我需要在Ddev Web docker 映像中执行 Python 脚本,但无法确定需要哪些Debian python 库才能获得带有附加 py 包依赖项的 Python 二进制文件。

Jam*_*son 7

DDEV 上的 Python 2

\n

你真的不想\xe2\x80\x99 想要使用Python 2 吗?(参见下面的注意事项 1 和 2)

\n

在 中添加以下内容.ddev/config.yml

\n
webimage_extra_packages: [python]\n
Run Code Online (Sandbox Code Playgroud)\n

如果您的 Python 2 脚本需要通过安装额外的包依赖项pip,您将需要使用自定义 Dockerfile:

\n
ARG BASE_IMAGE\nFROM $BASE_IMAGE\nRUN apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com \\\n  && apt update\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confold" --no-install-recommends --no-install-suggests python python-pip\nRUN pip install somepackage anotherpackage\n
Run Code Online (Sandbox Code Playgroud)\n

注意:自定义 Dockerfile 将webimage_extra_packages覆盖.ddev/config.yaml.

\n

注意事项 1:截至 2022 年,DDEV Web 映像运行 Debian 11 并sudo apt-get python仍然安装 Python 2。这可能会在 Debian 的未来版本中发生变化,因此升级 DDEV 时要小心。

\n

警告 2:Python 2 已达到其生命周期并且不再受支持。此外,重要的包管理器pip不再能够在最新的 Python 2 上本机安装(无需解决方法),因此您最好使用该实用程序将脚本升级到 Python 3 2to3

\n

DDEV 上的 Python 3

\n

使用以下 Ddev 配置将 Python 3 以及 py 脚本的大多数其他包依赖项安装到 /usr/bin/python 中。

\n
ARG BASE_IMAGE\nFROM $BASE_IMAGE\nRUN apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com \\\n  && apt update\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confold" --no-install-recommends --no-install-suggests python python-pip\nRUN pip install somepackage anotherpackage\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,默认情况下会安装 Python 3,/usr/bin/python3因此请添加python-is-python3包以python执行 Python 3。

\n

您通常还可以解决需要安装该python3-pip软件包的问题,​​因为大多数 Python 3 软件包已经针对 Debian 进行了捆绑。因此,可以通过逗号分隔的名称将其他 Python 3 包依赖项添加到webimage_extra_packages. 请在此处查看适用于 Debian 的稳定 Python 软件包列表

\n

如果您的依赖项未捆绑,并且您需要使用pip、Conda 或其他 python 包管理器,那么您必须实现一个自定义 Dockerfile,.ddev/web-image/Dockerfile如下所示:

\n
ARG BASE_IMAGE\nFROM $BASE_IMAGE\nRUN apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com \\\n  && apt update\nRUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confold" --no-install-recommends --no-install-suggests python3 python-is-python3 python3-pip\nRUN pip3 install somepackage anotherpackage\n
Run Code Online (Sandbox Code Playgroud)\n

注意:自定义 Dockerfile 将webimage_extra_packages覆盖.ddev/config.yaml.

\n