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的安装残余和缓存:

    bash 复制代码
    # 终止任何正在运行的 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. 更新系统包列表和已安装的包:

    这是一个好习惯,确保你的系统是最新的,并且可以获取到最新的软件包信息。

    bash 复制代码
    sudo apt update
    sudo apt full-upgrade -y # 升级所有已安装的包,包括依赖关系

核心库安装 (使用APT)

现在我们可以开始使用apt来安装所需的Python库了。

  1. 安装NumPy

    NumPy是Python科学计算的基础库,提供高性能的多维数组对象和工具。

    bash 复制代码
    sudo apt install -y python3-numpy
  2. 安装scikit-learn

    scikit-learn是一个强大的机器学习库,依赖于NumPy和SciPy。APT会自动处理这些依赖。

    bash 复制代码
    sudo apt install -y python3-sklearn
  3. 安装OpenCV及其Python绑定:
    python3-opencv包会安装OpenCV库的核心文件以及Python 3的绑定。

    bash 复制代码
    sudo apt install -y python3-opencv

    再次提醒: 这个通过apt安装的OpenCV版本通常是通用CPU版本,无法利用Jetson NX的GPU加速功能。如果您有高性能需求,请务必考虑其他安装方式。

验证安装

安装完成后,我们可以进入Python环境,导入这些库并检查它们的版本,以确认安装成功。

bash 复制代码
python3

在Python解释器中输入以下命令:

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文件,内容如下:

python 复制代码
#!/usr/bin/env python3
# my_project.py

import numpy as np
import cv2
from sklearn.linear_model import LinearRegression

print("--- 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文件所在的目录,然后运行:

    bash 复制代码
    python3 my_project.py
  2. 使脚本可执行并直接运行 (Shebang方式):

    如果你想让脚本像普通程序一样直接运行,可以在脚本文件开头添加#!/usr/bin/env python3这一行,并赋予执行权限。

    • 编辑my_project.py文件,在最顶部添加#!/usr/bin/env python3

    • 给脚本添加执行权限:

      bash 复制代码
      chmod +x my_project.py
    • 运行脚本:

      bash 复制代码
      ./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开发!

相关推荐
大模型真好玩11 小时前
深入浅出LangGraph AI Agent智能体开发教程(九)—LangGraph长短期记忆管理
人工智能·python·agent
好开心啊没烦恼11 小时前
图数据库:基于历史学科的全球历史知识图谱构建,使用Neo4j图数据库实现中国历史与全球历史的关联查询。
大数据·数据库·python·数据挖掘·数据分析·知识图谱·neo4j
麦兜*12 小时前
Redis多租户资源隔离方案:基于ACL的权限控制与管理
java·javascript·spring boot·redis·python·spring·缓存
西猫雷婶12 小时前
pytorch基本运算-torch.normal()函数输出多维数据时,如何绘制正态分布函数图
人工智能·pytorch·python·深度学习·神经网络·机器学习·线性回归
Q_Q51100828512 小时前
python+springboot+uniapp基于微信小程序的任务打卡系统
spring boot·python·django·flask·uni-app·node.js·php
錵開や落幕┓80812 小时前
3dgs项目详解 :convert.py
python
补三补四12 小时前
卡尔曼滤波
python·算法·机器学习·数据挖掘
小蕾Java13 小时前
Python 开发工具,最新2025 PyCharm 使用
ide·python·pycharm
wa的一声哭了13 小时前
Stanford CS336 Lecture3 | Architectures, hyperparameters
人工智能·pytorch·python·深度学习·机器学习·语言模型·自然语言处理
SunnyDays101114 小时前
Python 自动化导出PDF表格:List、Dictionary、Pandas DataFrame和数据库实例演示
python·将列表导出为pdf·将字典导出为pdf·数据库导出为pdf·pdf表格单元格合并·dataframe导出为pdf