It’s usually pretty straight forward to get python things to work once you know how, but yeah, you can still hit edgecases with poorly structured dependencies. Even in simple cases, having to package things as an end user can be a tough barrier. Personally, I find the pain to be well worth what nix offers me, but I know that it’s just not a good fit for the vast majority of people.
Is it? Every time nixpkgs changes the python minor version all of my virtualenvs break, which is a pain. I guess I need to look into dev shell or something.
Yes you need to use a shell to make it reproducible in the nix sense; a regular venv will try to point to the nix store or lose libraries (or try to dynamic-link stuff) when your system env changes which is why you need it to be independent of it.
I don’t bother with venvs in my own projects because nix kind of subsumes its purpose, but it’s possible to work with them still.
Something that might help: devenv. I haven’t used this personally but the UX looks like an upgrade. (I just use flakes with dev shells defined inline long-form)
It’s usually pretty straight forward to get python things to work once you know how, but yeah, you can still hit edgecases with poorly structured dependencies. Even in simple cases, having to package things as an end user can be a tough barrier. Personally, I find the pain to be well worth what nix offers me, but I know that it’s just not a good fit for the vast majority of people.
Is it? Every time nixpkgs changes the python minor version all of my virtualenvs break, which is a pain. I guess I need to look into dev shell or something.
Yes you need to use a shell to make it reproducible in the nix sense; a regular venv will try to point to the nix store or lose libraries (or try to dynamic-link stuff) when your system env changes which is why you need it to be independent of it.
I don’t bother with venvs in my own projects because nix kind of subsumes its purpose, but it’s possible to work with them still.
Something that might help: devenv. I haven’t used this personally but the UX looks like an upgrade. (I just use flakes with dev shells defined inline long-form)
This video came across my feed last night, and might give you a rough idea: https://youtu.be/jldArhyi6jM&t=581