我需要在 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将脚本升级到 Python 3
实用程序。
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/