当前位置: 首页 > ops >正文

102、【OS】【Nuttx】【周边】文档构建渲染:安装 Esbonio 服务器

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

接之前 blog
【OS】【Nuttx】【周边】文档构建渲染:reStructuredText 格式
之前 blog 分析了 reStructuredText 文件格式,和 VSCode 相关扩展的安装,其中介绍了 Esbonio 扩展,在 VSCode 中,安装了 Esbonio 扩展,还不能实时渲染 rst 文件,因为 Esbonio 扩展只是前端,需要安装 Esbonio 服务器才能进行渲染,下面分析 Esbonio 服务器

安装 Esbonio 服务器

首先,Esbonio 需要在 Python 环境中运行,终端输入

python3 --version

检查 python 版本 ok
在这里插入图片描述
终端输入

python3 -m pip --version

检查 python 包管理模块 pip 已安装 ok
在这里插入图片描述
终端输入

python3 -m pip install esbonio

尝试安装 esbnio 语言服务器,可以看到出现如下报错

adminpc@adminpc-M600:~/nuttx_pdt$ python3 -m pip install esbonio
error: externally-managed-environment× This environment is externally managed
╰─> To install Python packages system-wide, try apt installpython3-xyz, where xyz is the package you are trying toinstall.If you wish to install a non-Debian-packaged Python package,create a virtual environment using python3 -m venv path/to/venv.Then use path/to/venv/bin/python and path/to/venv/bin/pip. Makesure you have python3-full installed.If you wish to install a non-Debian packaged Python application,it may be easiest to use pipx install xyz, which will manage avirtual environment for you. Make sure you have pipx installed.See /usr/share/doc/python3.12/README.venv for more information.note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

下面来分析这个报错

在这里插入图片描述

  • 首先,这是 Python 3.12+ 在 Ubuntu/Debian 中引入的一项安全机制,防止 pip 随意修改系统级的 Python 环境,避免破坏系统依赖
  • Debian 是使用 Linux 内核和 GNU 工具集的开源计算机操作系统,而 Ubuntu 是基于 Debian 构建,在 Debian 的基础上增加了如图形化界面,系统配置工具等用户友好特性的桌面操作系统
  • Debian 系管理的 Python 环境(比如 Ubuntu,Debian 等)中,系统自带的 Python 会运行一些关键工具(比如 apt、systemd 启动脚本等),如果直接用 python3 -m pip install 安装第三方包,可能会覆盖系统依赖,导致系统不稳定或崩溃,所以从 Python 3.12 开始,Debian 团队启用了 PEP 668,禁止直接用 pip 安装包到系统 Python 环境

当然,错误提示也推荐了三种方法

  • 使用系统包管理器,比如 apt install python3-esbonio,这取决于 Ubuntu/Debian 是否提供了 esbonio 的 .deb 包,但目前看 esbonio 没有被收录进官方仓库,所以这条路走不通
  • 使用虚拟环境,最标准,最推荐的做法(这里先不用,后面有机会再尝试)
  • 使用 pipx 安装,pipx 是专门用来安装 Python 命令行应用的工具,会自动为每个应用创建独立的虚拟环境

这里 note 提示说可以加 --break-system-packages,虽然能强制安装,但很暴力,并且违背了系统设计原则,会破坏系统 Python 环境

下面为了不破坏系统 Python,下面再多加个选项 --user

python3 -m pip install --user esbonio --break-system-packages

虽然此时还有选项 --break-system-packages,但不会真的破坏系统,只是说服 pip 忽略 EXTERNALLY-MANAGED 错误

此时包安装在用户本地目录 ~/.local/lib/python3.12/site-packages,不影响系统其他用户,也不修改 /usr 目录,只是绕过了警告锁

查看本地目录 ~/.local/lib/python3.12/site-packages
在这里插入图片描述
可以看到 esbonio 已安装完毕

ok,今天先到这里,下篇 blog 继续

http://www.xdnf.cn/news/17817.html

相关文章:

  • Codeforces 无路可走
  • Git代码版本管理
  • 一文打通 AI 知识脉络:大语言模型等关键内容详解
  • Python基础-数据结构
  • 【部署K8S集群】 1、安装前环境准备配置
  • 重塑工业设备制造格局:明远智睿 T113-i 的破局之道
  • 基于多模型的零售销售预测实战指南
  • Spring IOC容器在Web环境中的启动奥秘:深入源码解析
  • 从 LLM 到自主 Agent:OpenCSG 打造开源 AgenticOps 生态
  • 云原生俱乐部-k8s知识点归纳(4)
  • EhViewer安卓ios全版本类下载安装工具的完整路径解析
  • OpenTelemetry WebSocket 监控终极方案:打通最后一公里
  • TCP传输层协议(4)
  • 攻防世界—fakebook(两种方法)
  • Java集合Map与Stream流:Map实现类特点、遍历方式、Stream流操作及Collections工具类方法
  • 集合车位租售、充电桩共享、二手市场、便民服务的家政服务平台,带源码
  • STM32的PWM
  • Linux网络基础概念
  • NAT 和 PNAT
  • AI提高投放效率的核心策略
  • 使用原生css实现word目录样式,标题后面的...动态长度并始终在标题后方(生成点线)
  • JUC LongAdder并发计数器设计
  • 优先级反转问题
  • 基于阿里云音频识别模型的网页语音识别系统实现
  • Flink中基于时间的合流--双流联结(join)
  • 【Doris】-工具SQLConverter
  • Stagehand深度解析:从开源自动化工具到企业级RPA平台的演进之路
  • VisualStudio2022调试Unity C#代码步骤
  • 第2篇_Go语言基础语法_变量常量与数据类型
  • Android项目中Ktor的引入与使用实践