【问题标题】:Use asyncpg python module in alpine docker image在 alpine docker 镜像中使用 asyncpg python 模块
【发布时间】:2020-06-12 20:15:07
【问题描述】:

我正在尝试使用python模块asyncpg构建基于python:3-8.alpine的图像。

这是我的 Dockerfile 的一部分:

FROM python:3.8-alpine

RUN apk add gcc
RUN apk add python3-dev

RUN pip3 install asyncpg

我添加了gccpython3-dev,因为我认为我需要它们能够根据文档构建asyncpghttps://magicstack.github.io/asyncpg/current/installation.html(但我不确定,我想我应该能够无需构建此模块即可安装)

但是我在构建镜像时出现以下错误:

gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/local/include/python3.8 -c asyncpg/pgproto/pgproto.c -o build/temp.linux-x86_64-3.8/asyncpg/pgproto/pgproto.o -O2 -fsigned-char -Wall -Wsign-compare -Wconversion
In file included from asyncpg/pgproto/pgproto.c:29:
/usr/local/include/python3.8/Python.h:11:10: fatal error: limits.h: No such file or directory
    11 | #include <limits.h>
       |          ^~~~~~~~~~
compilation terminated.
error: command 'gcc' failed with exit status 1

如何解决此错误并安装 asyncpg

谢谢

【问题讨论】:

    标签: python docker alpine asyncpg


    【解决方案1】:

    您必须安装构建工具,而不仅仅是 gcc。您也可以删除RUN apk add python3-dev 步骤。由于您使用 python 作为基础图像。

    FROM python:3.8-alpine
    
    RUN apk add --no-cache build-base
    
    RUN pip3 install asyncpg 
    

    构建标准输出

    Step 3/3 : RUN pip3 install asyncpg
     ---> Running in e109c84feec3
    Collecting asyncpg
      Downloading asyncpg-0.20.1.tar.gz (734 kB)
    Building wheels for collected packages: asyncpg
      Building wheel for asyncpg (setup.py): started
      Building wheel for asyncpg (setup.py): finished with status 'done'
      Created wheel for asyncpg: filename=asyncpg-0.20.1-cp38-cp38-linux_x86_64.whl size=1337371 sha256=5a0dcfc8c327eb4068814a9bf0a1d9beee1b9c440c1100efcede8ef63b1dac09
      Stored in directory: /root/.cache/pip/wheels/22/c9/61/991ebd5df043025e222695b7c4bc84e527bf3f0239073f0ea2
    Successfully built asyncpg
    Installing collected packages: asyncpg
    Successfully installed asyncpg-0.20.1
    Removing intermediate container e109c84feec3
     ---> 21dacd97e784
    Successfully built 21dacd97e784
    

    【讨论】:

    • 谢谢,这正是我想要的!
    【解决方案2】:

    您忘记添加 musl-dev 库。 这是工作的 Dockerfile

    FROM python:3.8-alpine
    
    RUN apk add gcc python3-dev musl-dev
    
    RUN pip3 install asyncpg
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 2020-05-17
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 2022-12-20
      相关资源
      最近更新 更多