This isAs a poorly-worded and very generalPython newcomer this question frustrated me endlessly and confused me for months. It Which virtual environment and package manager(s) should I invest in learning when I know that I will be made more specificusing it for years to include different aspects Python-only virtual environments built on top of pipcome?
The best article answering this vexing question is https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-misconceptions/ by Jake Vanderplas. There are 100sAlthough a few years old, it provides practical answers and the history of differences amongPython package and virtual environment managers from the trenches as these 6+ different pipstate-virtualof-environment variantsthe-art was developing. The OP didn't include poetry
It was particularly frustrating for me in the data science and "big data cloud computing" communities, because conda is widely used as a relative newcomervirtual environment manager and full function package manager for Python and JavaScript, SQL, Java, HTML5, and Jupyter Notebooks.
So why use pip at all, when conda does everything that pip and venv variants do?
The answer is, "because you MUST use pip if a conda package is simply not available." Many times a required package is only available in pip format and there is no easy solution but to an already complex set ofuse pip packages. You can learn to use conda build but if you are not the package maintainer, then you must convince the package owner to generate a conda package for virtual environmentseach new release (or do it yourself.)
These pip-based VE packages differ along many important and practical dimensions:
My strong recommendation is to avoid ALL pip virtual environments whenever possible. Use conda instead. Conda provides a unified approach. It is maintained by teams of professional open source developers and has a reputable company providing funding and a commercially supported version. The teams that maintain pip, venv, virtualenv, pipenv, and many other pip variants have limited resources by comparison. The pip virtual environment plurality is frustrating for beginners. UseThe pip-based virtual environmentsenvironment tools complexity, fragmentation, fringe and their (too) many variantsunsupported packages, and wildly inconsistent support drove me to use conda. For data science work, my recommendation is that to use a pip-based virtual environment manager as a last resort when conda packages do not exist.
InThe differences between the spiritvenv variants still scare me because my time is limited to learn new packages. pipenv, venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, poetry, and others have dozens of being helpfuldifferences and not simply ranting about the excessive complexity (especiallycomplexities that take days to understand. I hate going down a path and find support for newcomers), fragmentationa package goes belly-up when a maintainer resigns (and at times contentionor gets too busy to maintain it), and inconsistent support of fringe packages in. I just need to get my job done.
In the pip-virtual-environment ethosspirit of being helpful, here are a few links to help you dive in over your head, but not get lost in Dante's Inferno (re: pip).
Choosing "core" Python packages to invest in for your career (long-term), versus getting a job done short term) is as much an art andimportant. However, it is a business analysis question. Are you trying to be a Python coder tosimply get a task done, or learning to become a professional software engineer who builds scalable performant systems that require the least amount of maintenance effort over time?
IMHO IMHO, conda will take you to the latter place more easily than dealing thewith pip-plurality problems. conda is still missing 1-step pip-package migration tools that make this a moot question. If we could easilysimply convert pip packages into conda packages then pypi.org and conda-forge could be merged. Pip is a necessary evil because conda packages are not (yet) universal, and many. Many Python programmers are either too lazy to create conda packages, or they don'tonly program in other languages enough toPython and don't need conda's design center of being language-agnostic / multi-lingual support.
Keep it simple! I need one package that does 90% of what I need and guidance and workarounds for the 10% remaining edge cases.
Check out the articles linked herein to learn more about pip-based virtual environments (and more angles).
I hope this is helpful to your open-ended questionthe original poster and gives pip and conda aficionados some things to think about.