ubuntu安装ruff失败
Ubuntu 22.04/24.04 及以上系统自带 Python 3.12+ PEP 668 管理限制。
这会影响像 LazyVim 这类插件管理工具或者 Python 包管理工具(pipx、pip install --user)的安装和使用。
1. 什么是 PEP 668
PEP 668 是 Python 3.12 引入的一项安全策略,用于 阻止系统 Python 被用户直接修改。 特点:
-
系统自带的 Python 路径(例如
/usr/bin/python3)是 “externally managed”。 -
当你在这些环境里用
pip install --user或pipx安装全局包时,会报错:error: externally-managed-environment
原因是 Ubuntu 想保护系统依赖,不让 Python 包破坏系统工具。
2. LazyVim 在 Ubuntu 上的问题
LazyVim 和很多 Neovim 插件依赖 Python,尤其是 pynvim。如果你直接在系统 Python 上安装,可能会遇到:
pipx install pynvim报错python3 -m pip install --user pynvim报错
3. 推荐解决方案
方案 A:使用虚拟环境
最安全,也是官方推荐的方法。
# 创建一个专用虚拟环境
python3 -m venv ~/.local/venvs/lazyvim
# 激活
source ~/.local/venvs/lazyvim/bin/activate
# 安装 pynvim
pip install --upgrade pip
pip install pynvim
init.lua 然后在 LazyVim 配置中指向这个 Python 路径:
-- 指定 LazyVim 使用的 Python
vim.g.python3_host_prog = "/home/jasper/.config/nvim/venv/bin/python"
4. 总结
- 系统 Python 3.12+ 是 只读管理,不能随意用
pip install --user。 - 推荐使用 虚拟环境 或 pyenv 来安装 LazyVim 所需 Python 依赖。
- 修改 LazyVim
g:python3_host_prog指向虚拟环境 Python。