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

标签 python docker ddev

我需要在 Ddev 中执行一个 Python 脚本web docker 图像,但我无法弄清楚是什么 Debian python libraries需要获得具有附加 py 包依赖项的 Python 二进制文件。

最佳答案

DDEV 上的 Python 2

您真的不想使用 Python 2 吗? (请参阅下面的注意事项 1 和 2)

.ddev/config.yml中添加如下内容:

webimage_extra_packages: [python]

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

ARG BASE_IMAGE
FROM $BASE_IMAGE
RUN apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com \
  && apt update
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::="--force-confold" --no-install-recommends --no-install-suggests python python-pip
RUN pip install somepackage anotherpackage

注意:自定义 Dockerfile 将覆盖 .ddev/config.yaml 中的 webimage_extra_packages 配置。

注意事项 1:截至 2022 年,DDEV 网络镜像运行 Debian 11,sudo apt-get python 仍安装 Python 2。这在未来的 Debian 版本中可能会改变,所以升级 DDEV 时要小心。

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

DDEV 上的 Python 3

使用以下 Ddev 配置将 Python 3 安装到/usr/bin/python 以及您的 py 脚本的大部分附加包依赖项。

webimage_extra_packages: [python3, python-is-python3]

请注意,默认情况下,Python 3 安装到 /usr/bin/python3 所以添加 python-is-python3 包来制作 python 执行 Python 3.

您通常也可以解决需要安装 python3-pip 包的问题,​​因为大多数 Python 3 包已经为 Debian 捆绑在一起。因此,可以通过以逗号分隔的名称将额外的 Python 3 包依赖项添加到 webimage_extra_packages。参见 list of stable Python packages for Debian here .

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

ARG BASE_IMAGE
FROM $BASE_IMAGE
RUN apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com \
  && apt update
RUN 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
RUN pip3 install somepackage anotherpackage

注意:自定义 Dockerfile 将覆盖 .ddev/config.yaml 中的 webimage_extra_packages 配置。

关于python - 如何将 Python 和 pip 或 conda 包添加到 DDEV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70585611/

相关文章:

python - 函数返回偏离 0.001 的结果

python - While循环没有添加正确的

python - 如何在 Pandas 数据框中对最大和最小时间戳进行分组

php - Laravel Dusk - 无法使其在 GitLab CI 上运行

Docker 推送指定标签名下的本地镜像

elasticsearch - 使用Docker运行Elasticsearch

ssh - 如何从 drud/ddev-ssh-agent 容器中删除 key ?

python - Python 中用于 Python 的 ISO 人类可读解析器

docker - 在 Windows 10 Home ddev 启动未启动 - 无法为服务 db : invalid mount config for type "bind" 创建容器

docker - ddev:如何修改数据库凭据