Using Python's LSP With Mise and Uv for Helix
I've been experimenting with the helix editor
lately. One of the best built-in features is the LSP and how easy it is to
configure.
When using mise along with
uv for python development, it might seem like
the tools like ruff or pylsp might be lost in a dynamically changing
$PATH. But it's actually very simple.
This post assumes you know the basics of mise, uv, and helix. The main
point here is understanding how the tooling for helix is installed and
configured.
Mise Manages UV
First the setup is that mise manages uv. Even though uv can be considered
a global tool to manage python installations, this still makes sense when
involving mise. Consider that uv is more than a python manager but also a
package manager, build tool, and more. It's not uncommon to have a tool to do
those based on a project. That tool in this case is uv. Also if you are
dealing with multiple uv versions, they are all still in a global install
path and not on a per-project virtual env installation.
Any project using the same version will always use the same paths.
$ mise ls uv
Tool Version Source Requested
uv 0.9.11
uv 0.9.12
uv 0.9.13 ~/.config/mise/config.toml latest
$ mise where uv
/home/glenn/.local/share/mise/installs/uv/0.9.13
Uv and Where the Tools are Installed
First install uv as usual in the global space (not where a mise.toml exists).
$ mise install uv
Then tell mise to use this version of uv.
$ mise use uv
Install a couple of tools, ruff for the formatter, and pylsp for the LSP.
$ uv tool install ruff
$ uv tool install pylsp
Now to see where the tools are installed:
$ uv tool dir --bin
/home/glenn/.local/bin
$ ls /home/glenn/.local/bin
pylsp python3.13 python3.14 ruff
There they are! All we need to do is make sure $HOME/.local/bin is in our
$PATH. helix with its sensible defaults will automatically pick up these
tools.
References