I've recently been using prefix-dev tools in my personal projects. Here's are my first thoughts and small gotchas I had to overcome.
I've been a conda user for years as it is the De facto python package manager for people working in geosciences. It can resolve python packages as well as C libraries and other large projects (e.g. GDAL) and even GPU dependencies such as cuda. I then switched to mamba which is a drop in, faster version of conda. I think conda is now as fast as mamba as the developers have upstreamed their solver to conda. However, it still slow to create a new "virtual environment (venv)" and install a package. It's slows down exploration when you want to try a new library.
Creating a new python environment and installing pytorch-lightning took ~30 seconds on my laptop.
mamba create -n test_env python=3.13 -y && conda activate test_env && mamba install lightning -y
Probably the fastest way to install lightning in a new venv is to use uv which took ~5 seconds on my laptop.
uv venv --python 3.13 && source .venv/bin/activate && unset CONDA_PREFIX && uv pip install lightning
uv is great for 90% of my exploration but if you are using more than simple python packages you may want to install libraries from conda-forge. This is where pixi comes in as the next generation conda package installer. It also is a project manager. As an example of this, I was playing with marvin recently. When playing with the audio functionality I needed to install pydub which required ffmpeg. ffmpeg is not a python package and therefore can't be installed with uv pip but it can be installed from conda-forge. At this point I switched from uv to pixi. However, first marvin needs to be added to conda-forge which I am doing here.
You can use pixi as a venv as below. This took ~15 seconds to install pytorch-lightning on my laptop
pixi init venv && cd venv && pixi add lightning
It shines when using it as project/package manager. Things I learnt:
rattler-build to build conda packages in lighting time.
When installing from a artifact repository manager you can create a file/etc/pixi/config.toml:
default-channels = ["URL1", "URL2"]
3. For an editable install of a local package in pyproject.toml do:
[tool.pixi.pypi-dependencies]
mypkg = {path = ".", editable = true}
4. I can move a lot of my shell scripts to tasks in pixi such as running a job using metaflow locally by adding to my pyproject.toml the text below and then running pixi run myflow_run_local
[tool.pixi.tasks]
myflow_run_local = "bash -c 'unset $(env | grep ''^METAFLOW'' | cut -d= -f1) && python src/myflow.py --environment=conda run'"
5. I've yet to try it but I may be able to use a pixi env in jupyter lab using pixi-kernel.