3 ms·
I think the reality is that it's misunderstood and misused. Perhaps this is an education problem. 1. All virtualenv related things are not package managers. Th
by cik 4y ago
I think the reality is that it's misunderstood and misused. Perhaps this is an education problem.
1. All virtualenv related things are not package managers. They're isolation tools. They ensure your application controls its environment.
2. Pyenv, asdf, and others provide the same benefits for versions of Python. They're incredibly powerful tools for those of us who need to support multiple versions.
3. Tools like conda, poetry, pipfile, etc serve to solve dependency management based on how you, as a user want to interact.
Given my needs, I find poetry invaluable (and I use none of its venv integrations). For specific projects I rely on pip, as that meets the goal there.
It could be better, but IMHO poetry and friends have drastically improved the situation over pip freeze.
- ollysb 4y agoAdopting Poetry as the official Python package manager seems like the fastest path out of this mess.
- hobofan 4y agoThere is no "fast path out of this mess". If you really dig in the topic, you see that the major problem is that most packages use setuptools for packaging, which includes a setup.py which is executed during installation/dependency resolution and can change the set of dependencies dynamically based on host machine attributes. And sadly that's not just a theoretical feature, but one that a lot of libraries in the wider ecosystem take advantage of (which some of them not seeing a need for changing the behaviour). If we really would like to enforce Poetry-style package management, migration effort that's almost as big as Python 2 -> 3 will be necessary.
- wodenokoto 4y agoConda does do virtual environment management. It's why I use it. It actually manages to do both Python version and python packages for my projects. I think as an interface, it is the best option for Python development, but in practice there aren't enough stuff on the conda channels, so you need to install things from both pip and conda and then you are in a messy situation.
- raverbashing 4y agoConda is a walled garden. It's hard to enjoy its value if it doesn't play well with the rest > so you need to install things from both pip and conda and then you are in a messy situation. Well obviously
- Dayshine 4y agoThe requirement for isolation tools is the dumpster fire. C#/.NET/NuGet provides system wide package caching and project level isolation. Javascript/npm doesn't bother with the caching, but still has isolation without effort.