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

Docker中安装snips-nlu失败,报distutils.msvccompiler缺失错误

Docker Ubuntu 20.04 安装 snips-nlu 的替代方案

方案1:补全系统编译依赖与distutils组件

Linux环境下出现distutils.msvccompiler错误,本质是缺少Python distutils组件,同时scikit-learn源码编译需要系统级编译工具。修改安装脚本,先安装必要的系统依赖:

# 安装系统编译工具和Python distutils
apt update && apt install -y python3-distutils gcc g++ gfortran libopenblas-dev liblapack-dev

# 执行原有依赖安装流程
pip3 install numpy scipy
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
pip3 install setuptools-rust
source ~/.cargo/env
pip3 install snips-nlu

方案2:用预编译Wheel包跳过源码编译

让pip优先使用预编译的二进制包,绕开scikit-learn的源码编译环节:

pip3 install numpy scipy
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
pip3 install setuptools-rust
source ~/.cargo/env
# 强制使用预编译包
pip3 install --only-binary :all: scikit-learn snips-nlu

如果找不到匹配Python3.10的scikit-learn预编译包,可以指定兼容版本:

pip3 install --only-binary :all: scikit-learn==1.1.3 snips-nlu

方案3:直接使用现成的snips-nlu Docker镜像

无需手动编译,直接拉取现成镜像运行:

# 拉取官方镜像
docker pull snips/snips-nlu:latest
# 启动交互容器
docker run -it snips/snips-nlu:latest /bin/bash

若官方镜像不符合环境需求,可编写自定义Dockerfile基于Ubuntu20.04构建:

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHON_VERSION=3.10.4

# 安装系统依赖与Python3.10
RUN apt update && apt install -y \
    python3.10 python3.10-dev python3-pip python3-distutils \
    gcc g++ gfortran libopenblas-dev liblapack-dev \
    curl && \
    update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1

# 安装rust与snips-nlu依赖
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && \
    echo "source ~/.cargo/env" >> ~/.bashrc && \
    /root/.cargo/bin/rustup update && \
    pip3 install numpy scipy setuptools-rust snips-nlu

CMD ["/bin/bash"]

构建并运行镜像:

docker build -t my-snips-nlu .
docker run -it my-snips-nlu

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:36:22