以下是我的Python应用场景,希望大家给点配置建议
- lsp-bridge: C++/VHDL/SystemVerilog/Python 开发,要在多个repo里开启
- org-mode + Jupyter:
- Python脚本卡发:在非Python项目的repo里,写一些简单Python脚本
- Python项目:独立的Python工具,要求支持不同Python版本。
目前,用系统默认环境,安装所有依赖包。经常发生开发的Python脚本和工具无法在其他服务器上运行的问题 (版本不一致,缺少依赖包)。
现在公司在推 uv, 听到很多好评,不知如何在我的应用场景使用。
uv 类似于对 Python 内置工具包和环境管理 pip 和 pyvenv 的包装,和他们的命令基本兼容。所以如果 pip 和 pyvenv 能处理你的场景,那 uv 也可以
uv 支持管理 python 版本,可以针对不同的虚拟环境使用不同的 Python 版本
uv 也支持锁文件 uv.lock,可以锁定具体的包版本,其他机器上也有 uv 的话就可以 uv sync 同步虚拟环境
而且 lsp-bridge 有通过 uv 安装依赖的脚本,这样就不用把 lsp-bridge 的依赖安装到全局环境中(当然这不用 uv 也可以做到,只是不这么便利)
我个人是用 uv 基本代替了 pip 和 pyvenv 的。conda 其实和 uv 不是相互代替的关系,conda 好在可以管理非 Python 依赖。但如果没有这些需求的话,我觉得 uv 基本就能满足了
1 个赞
uv 没什么问题,非常好学,五分钟就会用了。对于新的项目没有基于传统 pip 的历史包袱的,用四个命令就够了 uv init,uv add,uv remove,uv sync。老的 legacy 的项目就直接用 uv pip。再多用一个命令 uv tool 用来安装例如 ranger-fm,yt-dlp 之类的全局 python app。
coldle
5
我是在终端用的,uv 本质仍然是 python venv,source 进虚拟环境一把梭。只是跑脚本的时候方便点,直接 uv run xxx 就完事
org mode 里改下 python 就能适配用 uv run 运行了
#begin_src python :python uv run -
4 个赞
eglot+pyright, clangd
个人没咋用过lsp-bridge,主要是因为c++都是远程开发,不涉及客户端
如果用 venv, 那么用 direnv 就足够了(对应插件 envrc)
chuck
10
先按照官网的教程安装uv,ty和ruff;
配置eglot:
(add-to-list 'eglot-server-programs
'((python-mode python-ts-mode) . ("ty" "server")))
格式化可以用reformatter包:
(reformatter-define python-format
:program "ruff"
:args '("format" "-"))
(add-hook 'python-mode-hook 'python-format-on-save-mode)
代码工程下,可以用uv创建venv后,在pyproject.toml中增加:
[tool.ty.environment]
python = ".venv"
[tool.ruff]
line-length = 88
这样应该就可以用了
我之前用 reformatter 会卡顿,现在换了 apheleia-mode。今天刚发现这个包,感觉配置更简单。
lsp server 推荐ty+ruff,然后可以配置一个elpy
我也用 ty, 但是 ty 现在功能似乎还不完善,但日常算是 基本可用了
self.xxx 这个 xxx 无法被 reference
- 没有 format 功能?
至于 ruff, 似乎 ty 内部自带了自己的诊断功能?不清楚它和 ruff 的关系,官方文档也没有说
chuck
14
ty:code navigation, completions, code actions, auto-import, inlay hints, on-hover help
ruff:linter and code formatter
self.xxx我自己的环境里面完全可以通过xref-find-references获取到呀