linux(ubuntu)中Conda、CUDA安装Xinference报错ERROR: Failed to build (llama-cpp-python)

在这里插入图片描述

文章目录

  • 一、常规办法
  • 二、继续
  • 三、继续
  • 四、缺少 libgomp库
  • (最终解决)在 Conda 环境中安装 libgomp

如果符合标题情况
执行的:

pip install "xinference[all]"

大概率是最终解决的情况。


一、常规办法

llama-cpp-python 依赖 CMakeMakeg++ 来编译,所以可能是 缺少依赖 或者 环境配置不对。按照以下步骤排查问题并解决:


1. 确保 Python 版本符合要求
llama-cpp-python 需要 Python >=3.8,推荐 Python 3.10 或更高:

python --version

如果 Python 版本低于 3.8,建议升级。

如果使用 conda

conda create -n xinference_env python=3.10
conda activate xinference_env

2. 安装必要的依赖
如果你在 Ubuntu / Debian

sudo apt update
sudo apt install -y cmake make g++ python3-dev

如果你在 CentOS / RHEL

sudo yum install -y cmake make gcc-c++ python3-devel

如果你在 macOS

brew install cmake

3. 重新尝试安装
使用 pip 重新安装:

pip install --no-cache-dir llama-cpp-python

或者 强制重新编译

CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install --force-reinstall --no-cache-dir llama-cpp-python

如果你有 NVIDIA GPU 并希望使用 CUDA 加速:

CMAKE_ARGS="-DLLAMA_CUBLAS=on" pip install llama-cpp-python --no-cache-dir

4. 检查 pip 是否最新
有时 pip 版本太旧会导致安装失败:

pip install --upgrade pip setuptools wheel

5. 使用 Prebuilt 版本(跳过编译)
如果仍然失败,可以安装 预编译版本

pip install llama-cpp-python --prefer-binary

总结
检查 Python 版本 (python --version)
安装依赖 (sudo apt install cmake make g++ python3-dev)
清除缓存并强制重新安装 (pip install --no-cache-dir llama-cpp-python)
尝试 CUDA 版本(如果有 GPU)
使用预编译版本 (pip install llama-cpp-python --prefer-binary)


二、继续

在这种情况下,通常是因为构建环境的某些依赖或版本不满足要求。请按照以下步骤逐项排查和解决问题:

1. 升级构建工具和 Python 打包工具

确保你的 pip、setuptools 和 wheel 均为最新版本:

pip install --upgrade pip setuptools wheel

2. 检查 CMake 版本

低版本的 CMake 可能导致编译失败。请确认你的 CMake 至少在 3.18 以上:

cmake --version

如果版本较低,建议更新 CMake:

  • 使用 Snap 安装最新版本:
    sudo snap install cmake --classic
    
  • 或者从 CMake 官网 下载最新二进制包并安装。

3. 检查 g++ 编译器版本

llama-cpp-python 需要支持 C++17。请确保 g++ 版本足够新(推荐 g++ 9 或更高):

g++ --version

如果版本过低,安装 g+±9(或更高版本):

sudo apt install g++-9

并通过 update-alternatives 设置默认 g++:

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 90

4. 配置 CUDA 环境变量

既然你已经安装了 CUDA,请确保环境变量正确设置,特别是 CUDA_HOME(这有助于 CMake 定位 CUDA 库):

export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH

你可以将这些配置添加到 ~/.bashrc~/.profile 中以便永久生效。


5. 尝试详细日志安装

使用更详细的日志输出安装,以便获取具体错误信息:

pip install --no-cache-dir llama-cpp-python -v

观察输出日志,确认是否有其他缺失的依赖或编译错误提示。


6. 从源码安装

如果通过 pip 直接安装仍然失败,尝试从源码克隆并安装:

git clone https://github.com/abetlen/llama-cpp-python.git
cd llama-cpp-python
pip install .

这样可以获得更多编译过程中的详细信息,有助于定位问题。


三、继续

错误日志可能问题出在 CMake 无法找到 vendor/llama.cpp 目录下应有的 CMake 配置文件,以及 llava 相关子目录缺失。这通常有两种原因:

  1. 源码包缺失子模块内容
    如果你直接通过 pip 安装,而源码包中未包含子模块(即 vendor/llama.cpp 及其子目录),就会导致构建失败。解决方案是从 GitHub 克隆仓库时使用 --recursive 选项,确保拉取所有子模块内容,然后再安装。例如:

    git clone --recursive https://github.com/abetlen/llama-cpp-python.git
    cd llama-cpp-python
    pip install .
    
  2. 不需要构建 llava 支持
    错误日志显示构建过程中试图添加 llava 相关目标,但对应目录缺失。如果你不需要 llava(通常用于特定扩展功能),可以在编译时禁用它。尝试在安装时传递 CMake 参数关闭 llava 模块:

    CMAKE_ARGS="-DLLAMA_CPP_BUILD_LLAVA=OFF" pip install --no-cache-dir llama-cpp-python
    

    这样可以跳过对不存在目录的引用。


综合建议

  • 方案一:从源码克隆并安装(推荐用于 CUDA 支持)
    通过 Git 克隆完整仓库(包含子模块)再安装:

    git clone --recursive https://github.com/abetlen/llama-cpp-python.git
    cd llama-cpp-python
    pip install .
    
  • 方案二:禁用 llava 模块重新编译
    如果你确定不需要 llava 支持,可以禁用它:

    CMAKE_ARGS="-DLLAMA_CPP_BUILD_LLAVA=OFF" pip install --no-cache-dir llama-cpp-python
    

四、缺少 libgomp库

从错误日志来看,构建过程中链接 libggml-cpu.so 时缺失 OpenMP 运行时库(libgomp.so.1),导致一系列 GOMP_* 符号无法解析。这通常表明当前系统中缺少 GNU OpenMP 库。

为解决此问题,请依次执行以下步骤:

  1. 安装 libgomp 库
    在 Ubuntu 系统中,通常可以通过以下命令安装 libgomp:

    sudo apt-get update
    sudo apt-get install libgomp1
    

    如果需要开发头文件,也可以安装:

    sudo apt-get install libgomp-dev
    
  2. 验证库路径
    安装后,确认 libgomp.so.1 存在于系统库目录(如 /usr/lib/x86_64-linux-gnu/):

    locate libgomp.so.1
    

    或者:

    find /usr -name "libgomp.so.1"
    
  3. 确保编译器调用正确的 OpenMP 链接标志
    如果依然报错,请检查是否需要在编译参数中添加 -fopenmp。对于 llama-cpp-python 来说,通常 CMake 会自动检测,如果未能正确链接,可以尝试在环境变量中设置相应的 CMake 参数,例如:

    export CMAKE_ARGS="-DCMAKE_CXX_FLAGS=-fopenmp"
    pip install --no-cache-dir llama-cpp-python
    

(最终解决)在 Conda 环境中安装 libgomp

  1. 确认 libgomp 安装成功
    在当前 Conda 环境中执行:

    conda list libgomp
    

    确认输出中包含 libgomp。确保库文件(如 libgomp.so.1)位于 $CONDA_PREFIX/lib 目录下。

  2. 设置环境变量
    为确保编译时可以正确找到 OpenMP 库,可以将 Conda 库路径添加到 LD_LIBRARY_PATH 中(如果尚未设置):

    export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
    

    建议将此命令添加到 Conda 环境的激活脚本中,以便每次激活环境时自动生效。

  3. 重新编译安装 llama-cpp-python
    在确保 libgomp 可用后,重新尝试安装 llama-cpp-python:

    pip install --no-cache-dir llama-cpp-python
    

    如果你需要启用 OpenMP 支持且遇到链接问题,可以尝试添加编译标志:

    export CMAKE_ARGS="-DCMAKE_CXX_FLAGS=-fopenmp"
    pip install --no-cache-dir llama-cpp-python
    
  4. 检查编译日志
    观察编译输出,确认 libgomp 相关的错误不再出现。如果仍有问题,建议使用详细日志:

    pip install --no-cache-dir llama-cpp-python -v
    

    分析日志中的错误信息,以便进一步调整环境或 CMake 参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL中绘制图形元素的实现(使用visual studio(C++)绘制一个矩形)

目标&#xff1a;使用OpenGL提供的函数绘制矩形、线段、三角形等基本图形元素 所需效果 实验步骤 1、配置OpenGL&#xff08;详情参见OpenGL的配置&#xff09; 2、头文件引入 #include <gl/glut.h> 3、编写方法体 1>矩形实现 //绘制矩形 void DisplayRectangl…

庖丁解java(一篇文章学java)

(大家不用收藏这篇文章,因为这篇文章会经常更新,也就是删除后重发) 一篇文章学java,这是我滴一个执念... 当然,真一篇文章就写完java基础,java架构,java业务实现,java业务扩展,根本不可能.所以,这篇文章,就是一个索引,索什么呢? 请看下文... 关于决定开始写博文的介绍 …

面试高频#LeetCode#Hot100-字母异位词分组

题号链接 49. 字母异位词分组 - 力扣&#xff08;LeetCode&#xff09; 1首先定义map集合一个String对应一个String[]集合&#xff0c;遍历字符串数组 2对其先进行拆分&#xff0c;拆分为字符数组&#xff0c;再进行排序&#xff0c;再转为字符串 3如果key值没有就创建一个字符…

esProc SPL vs DuckDB:多源数据处理谁更胜一筹?

DuckDB 和 esProc SPL 都支持多样数据源处理&#xff0c;这里比较一下两者的差异。 支持的数据源种类 DuckDB 支持的数据源类型覆盖了常见的文件格式&#xff08;如 CSV、Parquet、JSON、Excel&#xff09;、云存储&#xff08;如 AWS S3、Azure Blob Storage&#xff09;以及…

超精密工件小孔几何尺寸测量:自动化解决方案

下载链接&#xff1a;&#xff08;最新版本&#xff09;超精密工件小孔几何尺寸测量&#xff1a;自动化解决方案python脚本代码&#xff0c;可直接运行&#xff0c;内包含测试数据&#xff0c;亲测好用资源-CSDN文库 在现代制造业中&#xff0c;超精密工件的质量控制至关重要&a…

重生之我在学Vue--第11天 Vue 3 高级特性

重生之我在学Vue–第11天 Vue 3 高级特性 文章目录 重生之我在学Vue--第11天 Vue 3 高级特性前言一、Teleport&#xff1a;打破组件层级的瞬移术1. 什么是Teleport&#xff1f;2. 核心用法3. 实战技巧 二、Suspense&#xff1a;异步组件的优雅过渡1. 为什么需要Suspense&#x…

MCU的工作原理:嵌入式系统的控制核心

MCU的工作原理可以概括为以下几个步骤&#xff1a; 1. 初始化 上电后&#xff0c;MCU从Flash存储器中加载程序代码&#xff0c;并初始化外设和寄存器。 2. 任务执行 根据程序逻辑&#xff0c;MCU执行数据处理、外设控制和通信等任务。通过中断系统实时响应外部事件。 3. 低…

游戏引擎学习第158天

回顾和今天的计划 我们在这里会实时编码一个完整的游戏&#xff0c;没有使用引擎或库&#xff0c;一切都由我们自己做所有的编程工作&#xff0c;游戏中的每一部分&#xff0c;无论需要做什么&#xff0c;我们都亲自实现&#xff0c;并展示如何完成这些任务。今天&#xff0c;…

k8s基础架构介绍

k8s基础架构介绍 k8s 是对容器进行编排的一种工具。通过k8s可以实现对容器的编排、部署、更新等 学习k8s之前&#xff0c;先了解相关的一些使用和配置k8s的一些工具。 k8s的常用工具 在 kubernetes 中&#xff0c;主要有三个日常使用的工具&#xff0c;这些工具使用 kube 前…

兴达易控Profinet 转 ModbusTCP跨网段通信模块

Profinet 转 ModbusTCP/跨网段通信模块 Profinet转ModbusTCP/跨网段通信模块&#xff0c;作为现代工业自动化系统中不可或缺的重要组件&#xff0c;正日益受到广泛关注和应用。 这种模块的核心功能是将Profinet网络协议转换为Modbus TCP协议&#xff0c;实现不同网络之间的无缝…

创新技术引领软件供应链安全,助力数字中国建设

编者按 随着数字化转型的加速&#xff0c;针对软件供应链的攻击事件呈快速增长态势&#xff0c;目前已成为网络空间安全的焦点。如何将安全嵌入到软件开发到运营的全流程&#xff0c;实现防护技术的自动化、一体化、智能化&#xff0c;成为技术领域追逐的热点。 悬镜安全作为…

某大厂自动化工程师面试题

一些大厂的自动化工程师面试题汇总: 基础知识类 请解释什么是PLC(可编程逻辑控制器)?什么是PID控制?它在自动化系统中的作用是什么?请描述一下工业4.0的基本概念。编程与控制系统类 你熟悉哪些PLC编程语言?请举例说明。如何在SCADA系统中实现数据采集和监控?请解释一下…

Java 大视界 -- 基于 Java 的大数据分布式数据库架构设计与实践(125)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

cursor中使用prettier-code formatter插件方法

cursor的"扩展"中搜索"prettier-code formatter"&#xff0c;然后安装 点击cursor编辑器右上角“更多操作”&#xff0c;然后打开“配置编辑器” 按照图片进行操作&#xff0c;进入到editor在editor中&#xff0c;找“格式化“&#xff0c;把Format On Sav…

OSPF-2 邻接建立关系

上一期我们说了OSPF的邻居建立关系以及OSPF邻居关系建立中建立失败的因素以及相关实验案例 这一期我们来说说OSPF的邻接关系建立时需要交互哪些报文以及失败因素及原因和相关实验案例 一、概述 在运行了OSPF的网络当中为了交互链路状态信息和路由信息,互相之间需要建立邻接关…

问deepseek: 如何处理CGNS网格文件里,多个zone之间的链接数据

在CGNS文件中&#xff0c;多个zone之间的链接数据通常通过ZoneGridConnectivity节点处理。以下是处理步骤&#xff1a; 1. 确定链接类型 首先&#xff0c;明确zone之间的链接类型&#xff0c;常见的有&#xff1a; 1-to-1连接&#xff1a;两个zone的边界点一一对应。** Over…

什么是SEO泛目(什么是SEO站群)

SEO泛目录与站群策略&#xff1a;提升网站优化的双剑合璧 在当今竞争激烈的互联网环境中&#xff0c;SEO优化已成为企业提升网站流量和品牌曝光的重要手段。而在众多SEO策略中&#xff0c;泛目录和站群因其独特的技术优势和效果&#xff0c;逐渐成为SEO从业者的热门选择。本文…

conda、pip、npm、yarn换国内源

conda源 # conda源 conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes# 换回conda的默认源 conda config --remove-key channels pip源 # pip源# 永久换源 pip config set global.index-url https://…

Jetson Orin NX jupyter lab的安装和使用

主要是为了梳理一下整个过程&#xff0c;其实步骤很简单&#xff0c;但容易出错。 注意&#xff0c;实际只有两个文件需要写入&#xff0c;一个是jupyter_lab_config.py&#xff0c;一个是jupyter.service。 配置文件的名字要写对&#xff0c;如果总是copy网上的代码&#xff0…

【清华大学第七版】DeepSeek赋能家庭教育的实操案例(批改作文+辅助语文/数学/科学学习+制定学习计划)

我用夸克网盘分享了「DeepSeek完整资料合集」&#xff0c;点击链接即可保存。打开「夸克APP」&#xff0c;无需下载在线播放视频&#xff0c;畅享原画5倍速&#xff0c;支持电视投屏。 链接&#xff1a;https://pan.quark.cn/s/621259e4af15 近日&#xff0c;清华大学发布了《…