wfb-ng 开源代码之Jetson Orin问题定位

server/2024/11/28 13:36:58/

wfb-ng 开源代码之Jetson Orin问题定位

  • 1. 源由
  • 2. 思考
  • 3. 步骤
    • 3.1 看差异
    • 3.2 看手段
    • 3.3 找帮助
  • 4. 分析
    • 4.1 查看日志
    • 4.2 定位问题
    • 4.3 网上搜索
    • 4.4 正确安装
  • 5. 总结
  • 6. 参考资料
  • 7. 补充
    • 7.1 来源
    • 7.2 如何确认文件的来源?
      • 方法 1:使用 `pip show`
      • 方法 2:查看文件的包信息
    • 7.3 常见安装方式
      • 方式 1:通过 `pip`
      • 方式 2:作为依赖被间接安装
      • 方式 3:通过操作系统包管理器
    • 7.4 如何检查具体版本?

1. 源由

遇到件奇怪的事情,昨天还好好的环境,今天突然出现wfb-ng无法正常启动!

2. 思考

首先,看差异。分析昨天和今天的差异是什么,通常是这些差异导致的问题。
其次,看手段。使用什么方法来定位问题,从而进一步找到解决方法。
再次,凡事自己没有把握的东西,先将【首先】+【其次】整理好,第一理清自己的思路,第二为帮助自己的人铺好路,方便专家了解问题现象和可能的原因。

3. 步骤

3.1 看差异

鉴于wfb-ng部分代码是python写的,因此考虑到昨天环境有所python依赖库安装,可能影响到了wfb-ng

但是更新的东西比较多,且由于都是脚本执行,依赖库的自动更新。最终是什么问题导致的,还真一时间无法回忆准确的点位。

3.2 看手段

“工欲善其事必先利其器”,这年头就一个现象启动不了,到底什么毛病,这。。。。。

所以有没有什么日志或者打印错误?

由于wfb-ng是采用systemctl启动,暂时看不到启动命令行打印信息。那估计只能看看日志是否保存在某个位置,通过日志打印看看能分析定位到那个位置。

3.3 找帮助

既然上面的两步都走了,自己找原因肯定需要点时间,整理清楚,专家可能更快!!!

  • “code=exited, status=1/FAILURE” after python update/installation #388

4. 分析

在自己研究问题的同时,关注网上搜索以及专家的反馈,整理步骤如下:

4.1 查看日志

$ sudo systemctl stop wifibroadcast@gs
$ sudo journalctl --rotate
$ sudo journalctl --vacuum-time=1s
$ sudo systemctl start wifibroadcast@gs
$ sudo journalctl -xu wifibroadcast@gs

注:一定要停止服务,因为如果启动不了wfb-ng会自己不断重启。

4.2 定位问题

从报错日志看到markupsafe组件里面没有soft_unicode

ImportError: cannot import name 'soft_unicode' from 'markupsafe' (/usr/local/lib/python3.8/dist-packages/markupsafe/__init_>

查看当前是否安装,以及安装的版本

daniel@daniel-nvidia:~$ pip show markupsafe
Name: MarkupSafe
Version: 2.1.5
Summary: Safely add untrusted strings to HTML/XML markup.
Home-page: https://palletsprojects.com/p/markupsafe/
Author: None
Author-email: None
License: BSD-3-Clause
Location: /home/daniel/.local/lib/python3.8/site-packages
Requires:
Required-by: jinja2, werkzeug

4.3 网上搜索

通过网络“人肉”搜索,最终定位到 Cannot import name ‘soft_unicode’ from ‘markupsafe’ in google colab

这里面的意思说:“soft_unicode is removed when markupsafe >= 2.1.0”

那么正确的版本建议是:pip install markupsafe==2.0.1

4.4 正确安装

$ sudo pip install markupsafe==2.0.1

安装有soft_unicode的版本:

$ pip show markupsafe
Name: MarkupSafe
Version: 2.0.1
Summary: Safely add untrusted strings to HTML/XML markup.
Home-page: https://palletsprojects.com/p/markupsafe/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: BSD-3-Clause
Location: /usr/local/lib/python3.8/dist-packages
Requires:
Required-by: werkzeug

5. 总结

逻辑上考虑:wfb-ng只是一个底层通信链路工具,更多是运行在后台,且没有特殊的前台UI,怎么需要soft_unicode?值得思考!!!

soft_unicode 的功能类似于 Python 内置的 str() 函数,但专注于在处理 Unicode 字符串时的兼容性。它的主要特点包括:

  1. 保证输出为字符串类型:无论输入是整数、浮点数还是其他类型,soft_unicode 会将其转换为字符串。
  2. 自动处理编码问题:如果输入是字节字符串(Python 2 中的 str 或 Python 3 中的 bytes),它会尝试解码为 Unicode。
  3. 安全性:避免直接调用 str() 或 unicode()(在 Python 2 中)的潜在问题,例如处理非 ASCII 字符时可能抛出的异常。

6. 参考资料

【1】wfb-ng Release 23.01镜像无头烧录&配置(1)
【2】wfb-ng Release 23.01镜像无头烧录&配置(2)
【3】FPV Camera(RPI3+V2.1) | wfb-ng Release 23.01 | ubuntu20.04 gnome软解测试
【4】FPV Camera(RPI3+V2.1) | wfb-ng Release 23.01 | Ubuntu 20.04 xfce软解测试
【5】FPV Camera(RPI 3B+/Zero W+V2.1) | wfb-ng Release 23.01 | H264硬解测试
【6】wfb-ng 开源工程结构&代码框架简明介绍
【7】ubuntu22.04@laptop安装&配置wfb-ng
【8】wfb-ng 开源代码之Jetson Orin安装
【9】wfb-ng 锁定WiFi接口
【10】wfb-ng 开源代码之wfb_tx&wfb_rx
【11】wfb-ng 开源代码之wfb_tx模式更新
【12】Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考

7. 补充

$ grep "soft_unicode" /usr/local/lib/python3.8/dist-packages/markupsafe/__init__.pyfrom ._speedups import soft_unicodefrom ._native import soft_unicode  # noqa: F401

/usr/local/lib/python3.8/dist-packages/markupsafe/__init__.py 文件是 MarkupSafe 库的核心模块,它通常通过 Python 的包管理工具(如 pip)安装。


7.1 来源

  • 安装来源

    • 通过 pip 安装 MarkupSafe 库时,__init__.py 是其代码库的一部分。
    • MarkupSafe 是一个独立的开源 Python 包,源代码托管在 GitHub 上,其 PyPI 页面为 MarkupSafe on PyPI。
    • 当你运行 pip install markupsafe 时,pip 会从 PyPI 拉取该库并将其安装到指定的 Python 环境路径中。
  • 系统路径

    • /usr/local/lib/python3.8/dist-packages/ 是标准的 全局 Python 包安装目录(针对 Python 3.8)。
    • 在安装 MarkupSafe 后,其代码(包括 __init__.py 文件)会存放在这个路径下的 markupsafe 目录中。

7.2 如何确认文件的来源?

可以通过以下步骤确认这个文件是从哪里来的:

方法 1:使用 pip show

运行以下命令查看 MarkupSafe 的安装路径和信息:

pip show markupsafe

输出示例:

$ pip show markupsafe
Name: MarkupSafe
Version: 2.0.1
Summary: Safely add untrusted strings to HTML/XML markup.
Home-page: https://palletsprojects.com/p/markupsafe/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: BSD-3-Clause
Location: /usr/local/lib/python3.8/dist-packages
Requires:
Required-by: werkzeug

Location 字段标明了 MarkupSafe 的安装位置。如果路径匹配 /usr/local/lib/python3.8/dist-packages/, 那么这个 __init__.py 就来自安装的 MarkupSafe。

方法 2:查看文件的包信息

在 Python 中,可以定位到模块所在的路径:

import markupsafe
print(markupsafe.__file__)

或者:

$ python3 -c "import markupsafe; print(markupsafe.__file__)"

输出示例:

/usr/local/lib/python3.8/dist-packages/markupsafe/__init__.py

这表明文件属于安装的 MarkupSafe 库。


7.3 常见安装方式

以下是可能安装 MarkupSafe 的几种方式:

方式 1:通过 pip

pip install markupsafe

方式 2:作为依赖被间接安装

MarkupSafe 通常是其他 Python 库(例如 Jinja2Flask)的依赖包。如果你安装了这些库,MarkupSafe 可能会被自动安装:

pip install jinja2

Jinja2 安装时会自动安装其依赖,包括 MarkupSafe。

方式 3:通过操作系统包管理器

某些操作系统提供系统级的 Python 包。例如,Ubuntu 的 python3-markupsafe 包:

sudo apt-get install python3-markupsafe

安装后,文件也会出现在系统的 dist-packages 路径下。


7.4 如何检查具体版本?

要查看当前安装的 MarkupSafe 版本,运行:

pip show markupsafe

或在 Python 中直接检查版本:

import markupsafe
print(markupsafe.__version__)

http://www.ppmy.cn/server/145634.html

相关文章

第三十章 TCP 客户端 服务器通信 - 作业服务器资源

文章目录 第三十章 TCP 客户端 服务器通信 - 作业服务器资源作业服务器资源自动切断断开连接的影响相关类 第三十章 TCP 客户端 服务器通信 - 作业服务器资源 作业服务器资源 如果正在编写一个IRIS服务器来与无法控制的客户端连接,则服务器进程必须发出CLOSE命令来…

蓝桥杯练习题

目录 1.劲舞团 2.数字诗意 3.封闭图形个数 4.回文数组 欢迎 1.劲舞团 0劲舞团 - 蓝桥云课 #include <iostream> using namespace std; int main() {int num1,M0;long long c[1000000];int cnt0;string a,b ;while(cin>>a>>b>>c[cnt])//系统自动输入…

WordCloud参数的用法:

-------------词云图集合------------- 用WordcloudPyQt5写个词云图生成器1.0 WordCloud去掉停用词&#xff08;fit_wordsgenerate&#xff09;的2种用法 通过词频来绘制词云图&#xff08;jiebaWordCloud&#xff09; Python教程95&#xff1a;去掉停用词词频统计jieba.toke…

矩阵重构——sortrows函数

s o r t r o w s sortrows sortrows函数依据某列的属性对其元素所在的行进行排序从而进行矩阵的排序 s o r t r o w s sortrows sortrows函数常用方法&#xff1a; 1. 1. 1. s o r t r o w s ( a , [ c 1 , c 2 ] ) sortrows(a,[c_1,c_2]) sortrows(a,[c1​,c2​])&#xff0c…

【C知道】ES6特性

请描述一下你对ES6及其后续版本&#xff08;如ES7、ES8等&#xff09;的新特性的理解&#xff0c;并举例说明在实际项目中的应用。 ES6&#xff08;ECMAScript 2015&#xff09;&#xff0c;也称为ES2015&#xff0c;引入了一系列显著的语言改进&#xff0c;旨在提高开发者的工…

RuoYi排序

RuoYi框架提供了多种实现排序的方法&#xff0c;以满足不同场景下的需求。这里简要介绍几种常见的排序实现方式&#xff1a; 1. 后端排序 1.1 使用startPagePlus方法 RuoYi框架中&#xff0c;可以通过对BaseController进行扩展来实现更灵活的分页与排序功能。例如&#xff0…

Docker 配置 HTTP 和 HTTPS 网络代理

前言 在内网环境中&#xff0c;为了实现全局代理上网&#xff0c;Linux 系统通常通过修改 .bashrc 或 /etc/profile 等文件&#xff0c;设置 HTTP 和 HTTPS 代理。这种方式可以为大多数应用提供代理支持&#xff0c;但 Docker 并不会自动读取系统的环境变量&#xff0c;因此需…

TensorFlow的基本概念

一、TensorFlow简介 TensorFlow是由Google开发的开源机器学习框架&#xff0c;用于深度学习和其他数值计算。其核心优势在于高度灵活性&#xff0c;支持多平台部署&#xff08;如移动设备、服务器等&#xff09;&#xff0c;并提供丰富的工具集&#xff0c;便于开发者快速构建…