You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Docker Python3.10环境安装curl-cffi>=0.5.9时遇链接错误,如何解决?

解决Docker Alpine环境中安装curl-cffi>=0.5.9的链接错误

问题场景

在python:3.10-alpine3.18镜像构建过程中,执行pdm install安装curl-cffi>=0.5.9时,链接器报错找不到libcurl-impersonate-chrome库。

错误日志

#12 50.74 gcc -shared 
#12 50.74 build/temp.linux-x86_64-cpython-310/build/temp.linux-x86_64-cpython-310/curl_cffi._wrapper.o build/temp.linux-x86_64-cpython-310/curl_cffi/ffi/shim.o 
#12 50.74 -L/usr/local/lib -L/usr/local/lib -lcurl-impersonate-chrome -o 
#12 50.74 build/lib.linux-x86_64-cpython-310/curl_cffi/_wrapper.abi3.so
#12 50.74 /usr/lib/gcc/x86_64-alpine-linux-musl/12.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lcurl-impersonate-chrome: No such file or directory
#12 50.74 collect2: error: ld returned 1 exit status
#12 50.74 error: command '/usr/bin/gcc' failed with exit code 1
#12 50.74 
#12 50.74 See /tmp/pdm-install-g3swgott.log for detailed debug log.
#12 50.74 [InstallationError]: Some package operations are not complete yet
#12 50.74 Add '-v' to see the detailed traceback
#12 ERROR: process "/bin/sh -c pdm install" did not complete successfully: exit code: 1

原Dockerfile

FROM python:3.10-alpine3.18

MAINTAINER jiangxiaoqiang (jiangtingqiang@gmail.com)

ENV LANG=en_US.UTF-8 \
    LC_ALL=en_US.UTF-8 \
    TZ=Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone \
    && mkdir -p /root/visa \
    && apk update \
    && apk add gcc wget curl vim musl-dev libstdc++ curl-dev g++

RUN pip install pdm
ADD . /root/visa/
WORKDIR /root/visa/
RUN pdm install
ENTRYPOINT exec /root/visa/scripts/startup-app.sh

解决方案

核心原因

curl-cffi>=0.5.9依赖curl-impersonate-chrome库,但Alpine Linux官方软件源未提供该预编译包,必须手动编译安装。

修改后的Dockerfile

FROM python:3.10-alpine3.18

MAINTAINER jiangxiaoqiang (jiangtingqiang@gmail.com)

ENV LANG=en_US.UTF-8 \
    LC_ALL=en_US.UTF-8 \
    TZ=Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone \
    && mkdir -p /root/visa \
    && apk update \
    && apk add --no-cache gcc wget curl vim musl-dev libstdc++ curl-dev g++ git autoconf automake libtool openssl-dev \
    # 编译安装curl-impersonate-chrome
    && git clone https://github.com/lwthiker/curl-impersonate.git /tmp/curl-impersonate \
    && cd /tmp/curl-impersonate \
    && ./build.sh chrome \
    && cp -r build/chrome/* /usr/local/ \
    && ldconfig \
    # 清理编译临时文件与冗余依赖
    && rm -rf /tmp/curl-impersonate \
    && apk del git autoconf automake libtool

RUN pip install pdm
ADD . /root/visa/
WORKDIR /root/visa/
RUN pdm install
ENTRYPOINT exec /root/visa/scripts/startup-app.sh

关键调整说明

  • 添加编译依赖:新增git、autoconf、automake、libtool、openssl-dev,满足curl-impersonate的编译需求。
  • 编译安装核心库:克隆官方仓库,编译Chrome版本的curl-impersonate,将产物复制到系统目录并更新链接缓存,确保系统能找到该库。
  • 镜像瘦身:编译完成后删除临时文件与不再需要的编译工具,减少镜像体积。

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:42:49