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.pswp.cn/pingmian/72353.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72353.shtml
英文地址,請注明出處:http://en.pswp.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;清華大學發布了《…