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

Docker部署LLM应用遇ctransformers库libctransformers.so加载错误求助

解决Docker容器中运行Python/Chainlit应用时ctransformers的.so文件找不到问题

问题场景

本地MacOS M1 Pro(ARM架构)环境下,Python3.11+Chainlit+ctransformers==0.2.27的应用运行正常,但通过Docker容器启动后报错:

OSError: /usr/local/lib/python3.11/site-packages/ctransformers/lib/basic/libctransformers.so: cannot open shared object file: No such file or directory

已确认容器内该文件实际存在。

原因分析

M1 Pro为ARM64架构,若Docker使用的基础镜像为AMD64(x86_64)版本,或者ctransformers安装的是预编译的AMD64库,会导致ARM架构的容器无法正确加载.so文件(文件存在但架构不兼容)。

解决步骤

1. 使用ARM架构兼容的基础镜像

修改Dockerfile的基础镜像为支持ARM64的Python镜像,示例:

FROM python:3.11-slim-bookworm

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY app.py .

CMD ["chainlit", "run", "app.py", "-w"]

2. 构建镜像时指定ARM平台

若Docker默认未使用ARM架构构建,执行构建命令时显式指定平台:

docker build --platform linux/arm64 -t local:app .

3. 从源码编译安装ctransformers(备选方案)

若预编译库仍不兼容,可从源码安装以适配容器架构:

  • 修改requirements.txt,将ctransformers==0.2.27替换为:
    git+https://github.com/marella/ctransformers.git@v0.2.27
    
  • 或在Dockerfile中直接编译安装:
    RUN pip install --no-cache-dir git+https://github.com/marella/ctransformers.git@v0.2.27
    

4. 验证容器架构

启动容器后,可进入容器确认架构匹配:

docker exec -it <container-id> uname -m

正常输出应为aarch64(ARM64架构标识)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:16:05