【问题标题】:How to build a python package with a c extension as a wheel for docker如何构建一个带有 c 扩展名的 python 包作为 docker 的轮子
【发布时间】:2020-06-11 22:25:53
【问题描述】:

我正在尝试构建一个带有 c 扩展名的 python 包,以便在 Docker 容器中使用。

我创建一个python轮如下:

python install bdist_wheel

包装看起来(或多或少)像

cpack
  __init__.py
  /cpp
  __init__.py
  c_extension.cpython-37m-x86_64_linux-gnu.so
 ...

并使用以下 Dockerfile。

FROM python:3.8-slim-buster

WORKDIR /home/user

COPY --chown=user:user requirements.txt /tmp/requirements.txt

RUN python -m venv user

RUN user/bin/pip install -r /tmp/requirements.txt 

RUN user/bin/pip install wheel
RUN user/bin/pip install my_c_package-0.0.1-py3-none-any.whl

USER user

...

当我在本地安装 my_c_package-0.0.1-py3-none-any.whl 时我没有问题,但在 docker 上我得到了

import cpack
...
ModuleNofFoundError: No module named cpack.cpp.c_extension

由于它在本地运行良好,我不清楚缺少什么?

【问题讨论】:

  • c_extension.cpython-37mFROM python:3.8

标签: python docker python-wheel python-extensions


【解决方案1】:

如 cmets 中的 phd 所示,更新扩展以在扩展构建中使用 python 3.8 可确保 python 3.8 正确拾取扩展。

【讨论】:

    猜你喜欢
    • 2021-05-25
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多