View in #code on Slack
@dhruv: https://python-poetry.org/blog/announcing-poetry-1-0-0.html
Announcing Poetry 1.0.0 | Blog | Poetry - Python dependency management and packaging made easy.
@passerby: is this solving the problem any better then say pipenv seems more or less the same
@gamato: it looks the same?
@bob.w: Python packaging and dependency management is that great space where we’ve decided “you know what, maybe just one way to do something isn’t all that great, mostly because your one way sucks.”
@dhruv: It’s similar to pipenv minus the drama
And imho looks cleaner to use
@bob.w: So if I just stick to using stock pip, and stock venv, and just checking my dependencies in with my project, I don’t need to give a shit about this stuff right?
@passerby: yeah most of these tools are just trying to combine to 2 things, can do it all manually if you want
@bob.w: Like I get that conda really helps to solve the “extensions have shared dependencies, and that’s shits a nightmare” problem
And I respect that, because yeah that shits a nightmare
@passerby: alot of them are trying to make it act more like say npm, but also manage your python version too
@bob.w: But npm is the barfs.
@passerby: yeah it is, but is better then how things are in python for the most part
where there really is no standard way to define your dependencies
@bob.w: Clearly I just haven’t been hit by this that badly. Because that has never been a problem for me.
@passerby: also whats a package manager you consider good?
@bob.w: hahahahahaha
They are all considered ‘necessary evils’
@passerby: like to me only cargo in rust comes to mind, but i also have not dug deep enough into rust to have issues yet
@bob.w: but pip works well enough for me. 99% of the time it will install a package I want, and after I test it, and it solves a real problem it gets added to whatever project I needed it for
the other 1% of the time the project needs some weird obscure C library that is convinced the entire world exists without windows and I get angry
@passerby: the most problems i have had, were actully with nuget
@bob.w: I think the only times I’ve used nuget, it was through paket which is some F# wrapper around it
Or visual studio using it behind the scenes without me knowing
@passerby: had dependency hell with it on a xamarian project before
@bob.w: But I just might not be the target audience for these tools, because I just aggressively vendor my dependencies
And only update them when absolutely necessary, as I’d rather have stability over latest features.
@dhruv: Pip is fine. But it’s not a project definition
@passerby: yeah i only update if i see a feature i want
@bob.w: Right, and I wouldn’t use it as project definition
pip is for getting packages, not for defining projects
venv is for isolation, not for defining projects
@passerby: what i think is being solved, is pip has now standard way to define what a project needs
@dhruv: Poetry aims to be more like cargo.toml where it defines your project and then manages the other stuff
@bob.w: okay, that makes a lot more sense. Most of the time I’ve seen this or pipenv pitched its been as a “hey we slammed 2 tools together and added a bunch of other nonsense on top” without really saying why.
@passerby: no no to me, poetry and pipenv try and solve the problem of. i cloned the project and now what?
a way to clearly define what is required to make it run, and what is required to develop for it
@Frieder_Erdmann: what’s the difference between that and a Requirements.txt?
(i’m not super versed in that stuff, so I might miss the obvious thing here)
@dhruv: Defines your python version, other project details, versions and custom sources etc…
@passerby: custom sources, interpreter version, dev vs prod dependencies
@dhruv: Also handles build and publishing for you
@Frieder_Erdmann: thanks!