如何构建一个带有 c 扩展名的 python 包作为 docker 的轮子
How to build a python package with a c extension as a wheel for docker
我正在尝试构建一个带有 c 扩展名的 python 包,以便在 Docker 容器中使用。
我创建一个 python 轮子如下:
python install bdist_wheel
包裹看起来(或多或少)像
cpack
__init__.py
/cpp
__init__.py
c_extension.cpython-37m-x86_64_linux-gnu.so
...
并使用以下 Docker 文件。
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
由于它在本地运行良好,我不清楚缺少什么?
更新扩展以在扩展的构建中使用 python 3.8,如注释中的 phd 所示,确保扩展被 python 3.8 正确拾取。
我正在尝试构建一个带有 c 扩展名的 python 包,以便在 Docker 容器中使用。
我创建一个 python 轮子如下:
python install bdist_wheel
包裹看起来(或多或少)像
cpack
__init__.py
/cpp
__init__.py
c_extension.cpython-37m-x86_64_linux-gnu.so
...
并使用以下 Docker 文件。
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
由于它在本地运行良好,我不清楚缺少什么?
更新扩展以在扩展的构建中使用 python 3.8,如注释中的 phd 所示,确保扩展被 python 3.8 正确拾取。