|
|
|
|
|
by cdent
1671 days ago
|
|
I'm always confused by these sorts of posts because they happen often so there is clearly a problem but for some reason I've never had much of an issue. I've been using and developing with Python for about 15 years. In that time I've worked on Python projects large (OpenStack) and small (gabbi) and taken over maintenance for some old standbys (wsgi-intercept, paste to name two). Dealt with the 2->3 transition. Released a whole bunch of things to PyPI and relied on far more things that I've pip installed from there. It's been fine. I don't know what I'm doing differently. |
|
1. Server applications that run in a dedicated environment.
2. Tools you write and run just on your machine (or some virtualenv, whatever).
3. Redistributable cli or desktop applications which end users will install and use.
For the first two types, you should never have any issues with Python and its dependency situation. You pin everything, and that's it.
For the third kind tho, it's complete pain. Different distros ship different Python versions, so you need to support all of them. You also have to consider that dependencies can't be an EXACT version, you have to support a range of them, and a variety of combinations.
And then, one dependency has a version that works in Python3.6, and another for 3.9. But they had an API change, so which one do you use? It'll break for half your users either way. Of maybe just put some `if version <= 3.6` all over the place, like we did during the py2->py3 transition?