Jetson NX Python環境搭建:使用APT輕松安裝NumPy, scikit-learn, OpenCV

引言

在NVIDIA Jetson NX等ARM架構的嵌入式AI板子上搭建Python開發環境,特別是安裝像NumPy、OpenCV這樣包含C/C++底層代碼的科學計算庫時,經常會遇到編譯失敗、耗時過長或依賴沖突等問題。這些問題尤其在通過pip從源代碼編譯安裝時更為突出,例如常見的ModuleNotFoundError: No module named 'skbuild'Cython編譯錯誤。

本文將介紹一種通過APT包管理器快速、穩定地安裝NumPyscikit-learnOpenCV的方法。這種方法極大地簡化了安裝流程,避免了繁瑣的源代碼編譯過程。

重要提示:
通過APT安裝的OpenCV版本通常是CPU版本,不會利用Jetson板子特有的GPU(CUDA)加速。如果您對OpenCV的性能有較高要求(例如用于深度學習推理),建議考慮使用預編譯的.whl文件自行編譯(這兩種方法更為復雜,但能發揮Jetson的硬件優勢)。本文主要面向追求安裝簡便和穩定性的用戶。

前期準備與清理

在開始之前,為了避免新舊安裝方式之間的沖突,我們首先需要清除之前可能失敗的pip安裝嘗試以及相關的緩存。

  1. 終止所有不必要的進程:
    如果你的Jetson NX當前運行著大量占用CPU和內存的服務(如ROS2節點),請務必在開始安裝前停止它們。最徹底的方法是重啟你的Jetson NX板子,重啟后直接進入終端,不要啟動任何其他應用程序。

  2. 徹底清除pip的安裝殘余和緩存:

    # 終止任何正在運行的 pip 命令 (如果還在運行,可按 Ctrl + C 幾次)# 卸載所有可能已部分安裝或失敗的 Python 包
    pip3 uninstall opencv-python
    pip3 uninstall numpy
    pip3 uninstall scikit-learn
    pip3 uninstall Cython
    pip3 uninstall scikit-build# 清除 pip 的下載緩存,確保下次下載的是干凈的版本
    pip3 cache purge# 刪除 pip 的臨時構建目錄(這些通常在 /tmp 下,重啟后也會自動清除)
    rm -rf /tmp/pip-build-*
    
  3. 更新系統包列表和已安裝的包:
    這是一個好習慣,確保你的系統是最新的,并且可以獲取到最新的軟件包信息。

    sudo apt update
    sudo apt full-upgrade -y # 升級所有已安裝的包,包括依賴關系
    

核心庫安裝 (使用APT)

現在我們可以開始使用apt來安裝所需的Python庫了。

  1. 安裝NumPy
    NumPy是Python科學計算的基礎庫,提供高性能的多維數組對象和工具。

    sudo apt install -y python3-numpy
    
  2. 安裝scikit-learn
    scikit-learn是一個強大的機器學習庫,依賴于NumPy和SciPy。APT會自動處理這些依賴。

    sudo apt install -y python3-sklearn
    
  3. 安裝OpenCV及其Python綁定:
    python3-opencv包會安裝OpenCV庫的核心文件以及Python 3的綁定。

    sudo apt install -y python3-opencv
    

    再次提醒: 這個通過apt安裝的OpenCV版本通常是通用CPU版本,無法利用Jetson NX的GPU加速功能。如果您有高性能需求,請務必考慮其他安裝方式。

驗證安裝

安裝完成后,我們可以進入Python環境,導入這些庫并檢查它們的版本,以確認安裝成功。

python3

在Python解釋器中輸入以下命令:

import numpy
print(f"NumPy Version: {numpy.__version__}")import sklearn
print(f"scikit-learn Version: {sklearn.__version__}")import cv2
print(f"OpenCV Version: {cv2.__version__}")# 簡單測試一下 OpenCV 和 NumPy 功能,確保其能正常工作
import numpy as np
img = np.zeros((200, 300, 3), dtype=np.uint8) # 創建一個200x300的黑色圖像
cv2.rectangle(img, (50, 50), (250, 150), (0, 255, 0), -1) # 在圖像上畫一個綠色矩形
cv2.imwrite("my_output_image_apt_test.png", img) # 保存圖像文件
print("OpenCV (via apt) installed successfully and created my_output_image_apt_test.png")exit() # 退出 Python 解釋器

如果所有命令都成功執行,并打印出了版本號,且在當前目錄下生成了 my_output_image_apt_test.png 文件,那么恭喜你,你的環境已經搭建成功了!

如何運行Python文件

安裝完成后,你可以像運行其他Python腳本一樣運行你的文件。

假設你有一個名為my_project.py的Python文件,內容如下:

#!/usr/bin/env python3
# my_project.pyimport numpy as np
import cv2
from sklearn.linear_model import LinearRegressionprint("--- Python Script Started ---")# 使用 NumPy
arr = np.array([1, 2, 3, 4, 5])
print(f"NumPy array: {arr}")# 使用 OpenCV
img = np.zeros((150, 250, 3), dtype=np.uint8)
cv2.circle(img, (125, 75), 50, (255, 0, 0), -1) # 在圖像上畫一個藍色圓形
cv2.imwrite("my_circle_image.png", img)
print("Created my_circle_image.png using OpenCV.")# 使用 scikit-learn
X_train = np.array([[1], [2], [3], [4], [5]])
y_train = np.array([2, 4, 5, 4, 5])
model = LinearRegression()
model.fit(X_train, y_train)
print(f"scikit-learn Linear Regression Coefficient: {model.coef_[0]:.2f}")print("--- Python Script Finished ---")

有以下兩種常用方式運行它:

  1. 直接使用python3命令 (最常用):
    在終端中,導航到你的my_project.py文件所在的目錄,然后運行:

    python3 my_project.py
    
  2. 使腳本可執行并直接運行 (Shebang方式):
    如果你想讓腳本像普通程序一樣直接運行,可以在腳本文件開頭添加#!/usr/bin/env python3這一行,并賦予執行權限。

    • 編輯my_project.py文件,在最頂部添加#!/usr/bin/env python3
    • 給腳本添加執行權限:
      chmod +x my_project.py
      
    • 運行腳本:
      ./my_project.py
      

重要注意事項

  1. OpenCV的GPU加速: 如前所述,通過apt安裝的OpenCV版本通常是CPU版本,無法利用Jetson的GPU加速。如果您對性能有較高要求:

    • 推薦方案: 尋找并安裝專門為Jetson ARM架構和CUDA編譯的opencv-python .whl文件。這些文件通常在NVIDIA官方社區、Qengineering等網站上提供。安裝.whl文件只需幾分鐘,且能充分利用GPU。
    • 自行編譯: 如果找不到合適的.whl文件,您可以嘗試從OpenCV源代碼進行編譯。這個過程極其耗時且復雜,需要正確配置CMake選項來啟用CUDA加速,并確保所有依賴庫版本兼容。
  2. Python虛擬環境(venv): apt安裝的Python包是針對系統級別的Python環境。如果你在將來使用venv(Python虛擬環境)來管理項目依賴,這些apt安裝的包默認不會在虛擬環境中可用。你需要在激活虛擬環境后,使用pip install在虛擬環境中再次安裝這些包(此時pip會嘗試下載預編譯的.whl文件或再次進行編譯)。

結論

通過本文介紹的APT安裝方法,你可以快速、簡便地在NVIDIA Jetson NX板子上搭建起包含NumPy、scikit-learn和OpenCV的Python開發環境。盡管APT安裝的OpenCV版本在GPU加速方面存在局限,但對于大多數日常開發和學習任務而言,它提供了一個穩定且易于維護的基礎環境。

希望這篇教程能幫助讀者們在Jetson NX上順利開展Python開發!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93022.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93022.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93022.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot項目中線程池的全面教程

一、線程池基礎概念與重要性1.1 為什么需要線程池在Spring Boot應用中,線程池是一種至關重要的并發編程工具,它通過??復用線程資源??顯著提升系統性能。主要優勢包括:??減少開銷??:避免頻繁創建和銷毀線程帶來的性能損耗?…

機器學習第八課之K-means聚類算法

目錄 簡介 一、K-means 的核心思想 二、K-means 聚類的工作流程 1. 確定聚類數量 K 2.初始化 K 個簇中心 3.簇分配:將數據點分配到最近的簇 4.更新簇中心:重新計算每個簇的中心 5.判斷是否收斂 6.輸出聚類結果 三、聚類效果評價方式 四、k-…

【P21】OpenCV Python——RGB和BGR,HSV和HSL顏色空間,及VScode中報錯問題解決

P21 1 RGB和BGR2 HSV和HSL,YUV2.1 HSV2.1. 色調H2.1.2 飽和度S2.1.3 明度V2.2 HSL2.3 YUV3 顏色空間轉換實戰4 VScode中報錯問題5 Windows 下 VScode 路徑格式(VScode很強大,路徑格式寫法自由多樣)RGB/BGR人眼識別的顏色 &#xf…

.NET 應用程序 Linux下守護進程腳本編寫

下面的腳本是生產可用,可靠的sh腳本,用于監控 .NET 應用程序并自動重啟。假如你打包發布到Linux的程序名稱為MyAspDemo;推薦打包模式為框架依賴:需要在Linux上安裝對應的donet版本;1.在Linux下新建一個文件&#xff0c…

圖論理論部分

旅游完回來繼續學習。 先來看一下圖論的理論部分,然后稍微做一下DFS的題目。 圖的基本概念 二維坐標中,兩點可以連成線,多個點連成的線就構成了圖。 當然圖也可以就一個節點,甚至沒有節點(空圖) 圖的種…

WebSocket集群方案解析與實現

一、WebSocket集群核心挑戰 1.1 關鍵問題分析 #mermaid-svg-gzRCTMr7wiVCokct {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gzRCTMr7wiVCokct .error-icon{fill:#552222;}#mermaid-svg-gzRCTMr7wiVCokct .error-t…

使用dify搭建hr簡歷助手-上傳簡歷-對接飛書ai表格

一、需求背景 hr在招聘平臺獲取簡歷后,想整理到簡歷庫,在線管理和維護,及其不方便,所以用dify搭建一個簡歷上傳助手,并且能保存到線上表格,方便維護和查看。 先看下最終的效果我們的工作流即可自動獲取文件…

《算法導論》第 22 章 - 基本的圖算法

大家好!今天我們來深入學習《算法導論》第 22 章的基本圖算法。圖論是計算機科學中的重要基礎,這些基本算法是解決很多復雜問題的基石。本文將結合代碼實現,幫助大家更好地理解和應用這些算法。思維導圖22.1 圖的表示在計算機中,圖…

基于PROFINET的西門子PLC通訊:S7-200與S7-1200在自動化倉儲中的協同應用

一.行業痛點與解決方案傳統倉儲物流系統中,采用西門子SMARTS7-200PLC(如CPUSR20、SR30等型號)的設備往往面臨三大通訊難題:一是無法直接接入以太網網絡,導致多PLC間的數據交互需要通過復雜的串口級聯實現,響…

redis實現秒殺超賣問題的解決方案:(僅限于單體項目)

秒殺實現通過樂觀鎖控制超賣問題通過悲觀鎖控制每個用戶只能下一單,避免用戶多次點擊,發送的多次下單請求(即多個線程)都成功,避免惡意攻擊每個請求訪問Tomcat時,就會分配一個線程處理請求業務邏輯:注*以下邏輯中報錯也…

Go與Python爬蟲實戰對比:從開發效率到性能瓶頸的深度解析

目錄 引言:兩種語言,兩種哲學 開發效率對比:從框架設計看易用性 Python的"開箱即用" Go的"手動組裝" 性能對比:從并發模型看效率差異 理論性能對比 實際測試數據 錯誤處理對比:從編程范式…

初識c語言————排序方法

今天我們學習的是c語言中的排序方法目錄:一.冒泡排序法二.選擇排序法下面我們正式學習c語言中的排序方法一.冒泡排序法1.冒泡排序法的過程:將無序的數組通過數組之間的大小比較,排成有序的樣子2.例如:5,3,4…

爬蟲與數據分析結合案例:中國大學排名爬取與分析全流程

爬蟲與數據分析結合案例:中國大學排名爬取與分析全流程 一、案例背景與目標 本案例以高三網中國大學排名(網址:2021中國的大學排名一覽表_高三網)為數據源,完成從數據爬取到分析可視化的全流程實踐。主要目標包括&am…

行業分享丨SimSolid 在汽車零部件開發中應用的可行性調研及實踐

*本文源自汽車行業用戶范會超投稿1、背景車型短周期開發背景下,高效的仿真技術顯得尤為重要。Altair 推出了多款加速設計/仿真的軟件,其中無網格軟件 SimSolid 與業務有一定的契合度,有必要論證其在汽車零部件結構分析領域的可行性。2、目標評…

MacOS字體看起來比在 Windows 上更好?

字體控們注意啦!🎉你們有沒有發現,同樣一段文字,在Mac和Windows上看起來就是不一樣?Mac上的字仿佛自帶柔光濾鏡,圓潤又舒適;而Windows上的字則像是精心雕琢的刀鋒,銳利且清晰。這背后…

Torch -- 卷積學習day1 -- 卷積層,池化層

目錄 一、CNN概述 二、卷積層 1、卷積核 2、卷積計算 3、邊緣填充 4、步長 5、多通道卷積計算 6、多卷積核卷積計算 7、特征圖大小 8、卷積參數共享 9、局部特征提取 10、卷積層API 三、池化層 1、池化層概述 1.池化層的作用 2.池化層類型 2、池化層計算 3、步…

藍橋杯---第六屆省賽單片機組真題

先出手寫的代碼&#xff0c;代碼分析還需要一段時間&#xff0c;不難&#xff0c;大家認真寫。#include <STC15F2K60S2.H> #include "Seg.h" #include "LED.h" #include "Key.h" #include "DS1302.h" #include "DS18B20.h&…

GPT-5深度解析:精準、高效、務實的新一代AI引擎

&#x1f31f; GPT-5深度解析&#xff1a;精準、高效、務實的新一代AI引擎在萬眾矚目中&#xff0c;OpenAI于2025年8月7日正式推出GPT-5——這一代模型沒有華麗的創意革命&#xff0c;卻以驚人的準確率提升、斷崖式降價和強大的工程能力&#xff0c;悄然重塑了生成式AI的應用邊…

oss(阿里云)前端直傳

WEB端前端直傳 參考文檔&#xff1a;web前端直傳并設置上傳回調 封裝oss-upload.ts // 圖片上傳 import { uploadToken } from /api/uploadFile.js // 獲取oss token接口// 定義 OSS 信息類型 interface OssInfo {policy: string;signature: string;x_oss_credential: strin…

vscode uv 發布一個python包:編輯、調試與相對路徑導包

背景 最近一直在使用uv做python包管理&#xff0c;用起來很方便。 尤其是在代碼上傳到github的時候&#xff0c;pyproject.toml 會顯示出當前項目依賴的python包。這樣在把代碼下載到本地之后&#xff0c;直接uv sync就可以很方便地恢復出python環境。 uv 除了有上述優點&…