Does Conda replace the need for virtualenv?
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Over a Mysterious Island
--
Chapters
00:00 Does Conda Replace The Need For Virtualenv?
00:32 Accepted Answer Score 229
01:19 Answer 2 Score 95
01:46 Answer 3 Score 55
04:22 Answer 4 Score 26
06:11 Thank you
--
Full question
https://stackoverflow.com/questions/3439...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #scipy #virtualenv #anaconda #conda
#avk47
ACCEPTED ANSWER
Score 229
Conda replaces virtualenv. In my opinion it is better. It is not limited to Python but can be used for other languages too. In my experience it provides a much smoother experience, especially for scientific packages. The first time I got MayaVi properly installed on Mac was with
conda.You can still use
pip. In fact,condainstallspipin each new environment. It knows about pip-installed packages.
For example:
conda list
lists all installed packages in your current environment. Conda-installed packages show up like this:
sphinx_rtd_theme 0.1.7 py35_0 defaults
and the ones installed via pip have the <pip> marker:
wxpython-common 3.0.0.0 <pip>
ANSWER 2
Score 95
Short answer is, you only need conda.
Conda effectively combines the functionality of pip and virtualenv in a single package, so you do not need virtualenv if you are using conda.
You would be surprised how many packages conda supports. If it is not enough, you can use pip under conda.
Here is a link to the conda page comparing conda, pip and virtualenv:
https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands.
ANSWER 3
Score 55
Virtual Environments and pip
I will add that creating and removing conda environments is simple with Anaconda.
> conda create --name <envname> python=<version> <optional dependencies>
> conda remove --name <envname> --all
In an activated environment, install packages via conda or pip:
(envname)> conda install <package>
(envname)> pip install <package>
These environments are strongly tied to conda's pip-like package management, so it is simple to create environments and install both Python and non-Python packages.
Jupyter
In addition, installing ipykernel in an environment adds a new listing in the Kernels dropdown menu of Jupyter notebooks, extending reproducible environments to notebooks. As of Anaconda 4.1, nbextensions were added, adding extensions to notebooks more easily.
Reliability
In my experience, conda is faster and more reliable at installing large libraries such as numpy and pandas. Moreover, if you wish to transfer your preserved state of an environment, you can do so by sharing or cloning an env.
Comparisons
A non-exhaustive, quick look at features from each tool:
| Feature | virtualenv |
conda |
|---|---|---|
| Global | n | y |
| Local | y | n |
| PyPI | y | y |
| Channels | n | y |
| Lock File | n | n |
| Multi-Python | n | y |
Description
virtualenvcreates project-specific, local environments usually in a.venv/folder per project. In contrast,conda's environments are global and saved in one place.- PyPI works with both tools through
pip, butcondacan add additional channels, which can sometimes install faster. - Sadly neither has an official lock file, so reproducing environments has not been solid with either tool. However, both have a mechanism to create a file of pinned packages.
- Python is needed to install and run
virtualenv, butcondaalready ships with Python.virtualenvcreates environments using the same Python version it was installed with.condaallows you to create environments with nearly any Python version.
See Also
venv: in the Standard Libraryvirtualenvwrapper: globalvirtualenvpyenv: manage python versionsmamba: "faster"conda- microvenv: pip-based venv (non-Windows)
- B. Cannon's blog post on How [non-conda] virtual environments work
In my experience, conda fits well in a data science application and serves as a good general env tool. However in software development, dropping in local, ephemeral, lightweight environments with virtualenv might be convenient.
ANSWER 4
Score 26
Installing Conda will enable you to create and remove python environments as you wish, therefore providing you with same functionality as virtualenv would.
In case of both distributions you would be able to create an isolated filesystem tree, where you can install and remove python packages (probably, with pip) as you wish. Which might come in handy if you want to have different versions of same library for different use cases or you just want to try some distribution and remove it afterwards conserving your disk space.
Differences:
License agreement. While virtualenv comes under most liberal MIT license, Conda uses 3 clause BSD license.
Conda provides you with their own package control system. This package control system often provides precompiled versions (for most popular systems) of popular non-python software, which can easy ones way getting some machine learning packages working. Namely you don't have to compile optimized C/C++ code for you system. While it is a great relief for most of us, it might affect performance of such libraries.
Unlike virtualenv, Conda duplicating some system libraries at least on Linux system. This libraries can get out of sync leading to inconsistent behavior of your programs.
Verdict:
Conda is great and should be your default choice while starting your way with machine learning. It will save you some time messing with gcc and numerous packages. Yet, Conda does not replace virtualenv. It introduces some additional complexity which might not always be desired. It comes under different license. You might want to avoid using conda on a distributed environments or on HPC hardware.