【问题标题】:How to add Python and pip or conda packages to DDEV如何将 Python 2 添加到 Ddev 的 Web Docker 映像
【发布时间】:2022-01-04 22:07:39
【问题描述】:

我需要在Ddev web docker 映像中执行旧版 python 2 文件,但我无法确定需要什么 Debian python libraries 才能使 Python 2 正常工作。

Ddev 提供的 Web 容器是 Debian 11 Bullseye 映像,其 PHP 发行版由 deb.sury.org 打包。

我尝试像这样在 .ddev/config.yml 中添加libpython2-stdlib

webimage_extra_packages: [libpython2-stdlib]

但是当登录到容器中时仍然看不到python 二进制文件。

为这个菜鸟问题道歉 - PHP 开发人员在这里具有最少的 Python 经验。

【问题讨论】:

    标签: python docker ddev


    【解决方案1】:

    您真的不想使用 Python 2 吗?

    截至 2022 年 1 月,在 Debian 11 Bullseye 映像上,sudo apt-get python 仍然安装 Python 2,因此:

    webimage_extra_packages: [python]
    

    .ddev/config.yml 解决了眼前的问题。

    但是,请注意 Python 2 完全 EOL 且不受支持。此外,重要的包管理器 pip 不再能够在最新的 Python 2 上本地安装(没有变通方法),因此您最好使用 2to3 实用程序将脚本升级到 Python 3 兼容性。

    一旦在 Python 3 上,您通常也可以解决需要安装 phython3-pip 包的问题,​​因为大多数 Python 3 包都是为 Debian 捆绑的。此处列出了 Debian Python 3 软件包:https://packages.debian.org/stable/python/

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

    webimage_extra_packages: [python3, python-is-python3, python3-somepackage, python3-anotherpackage]
    

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

    如果您的依赖项未捆绑,并且您需要使用 pip 或其他 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 配置。

    【讨论】:

      猜你喜欢
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 2020-01-21
      • 2021-12-11
      • 1970-01-01
      相关资源
      最近更新 更多