Glenn Yonemitsu - software engineer. yonemitsu@gmail.com

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