Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The fact that this exists shows that there is a serious problem in the python ecosystem. I'm sure it solves a real problem, so I'm not knocking the author. It's more of a "state of our industry" problem.


I maintain there is no issue. It's really not hard. conda is a smell for me though.

pyenv is all you need. it manages python versions and python virtual environments. you can create and destroy them just as easily as git branches.

pyenv + good ol' requirements.txt is really all you need.

if your env dictates containers, it's even easier to work with. FROM python:version and done.


The issue is you think pyenv has solved everything, someone else thinks poetry solves everything, I think uv solves everything, and someone else is apt installing things. And then there is installing torch and cuda...

I think having a very widely accepted and supported default would let the community rally around it and improve the experience and documentation (though I am not a fan of the centralized hosting that npm and cargo push, I much prefer the go approach, but we are already there with PyPI)


uv + poetry are a higher level in the stack than something like pyenv.

pip, uv, poetry are all analagous. they ensure the correct packages are installed. we have some internal apps that devs decided to start with poetry and it has some nice ergonomics ... but on the other hand I find the simplicity of a requirements file to be so ... simple. People get caught up on the file, too, but really its just a convention. you can call it whatever you want, deps.txt, deps.foo, packages.bar ... its just a plaintext file with newline delimited packages. since its "just a file" and "just unix" this has the added perk of being able to cat many files together and use that with pip. it's all just lines of text, pip does not care.

pyenv + pip works. pyenv + poetry works. pyenv + uv works. those become inconsequential decisions you can make on a case by case basis and try or forget as needed.


You're right not all of those need to be conflated but they aren't entirely orthogonal either, uv can install/manage python installations for you and poetry can manage environments as well if you want. On top of that, you have tools like mise that are more cross cutting.

I agree that there is a really nice simplicity to requirements.txt but I've myself enjoying uv enough to just fully embrace it (and not farm out to uv pip) and as a result I now find myself in pyproject.toml land.


I just install the libraries I need using the operating systems package manager. Works perfectly fine. In development I do use virtualenvs because I need to keep track of which dependencies are required, but in production I just apt-get install.


that will 100% come to bite you in the ass one day


Probably, but it keeps my dependencies low and packages are automatically updated with backported security patches. So far it has never been an issue, but there has been frustrations when the features aren't available, because the Debian packages aren't the newest versions.

I wouldn't recommend it for something with hundreds of dependencies, but I also wouldn't recommend having hundreds of dependencies.

Poetry has messed up packages more often apt ever did, in my use cases. So far using apt as by package manager has failed me exactly zero times.


If it works, it works. Just be mindful and prepared for the day where it stops working.


> Just be mindful and prepared

Absolutely, but that's true for pretty much all the package managers, for all languages. They all break at some point.

One thing I would note is: Don't install your dependencies with apt in a development environment, you need to have a clean environment to avoid dragging unneeded dependencies into your production environments. That does mean that you need to find the exact version of your dependency in Debian, but it's a good exercise and ensures that you're mindful of your dependencies.

Be mindful, be prepared is good advise, in all aspects of life really.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: