conda vs. pip vs. virtualenv
============================

If you are already familiar with pip or virtualenv, please see our chart comparing 
:download:`Conda, pip, and virtualenv <conda-pip-virtualenv-translator.html>`.

.. raw:: html

        <html><head><meta http-equiv="refresh" content="0; URL='../_downloads/conda-pip-virtualenv-translator.html'" /></head><body></body></html>

If you’ve used pip and virtualenv in the past, you can use conda to perform all 
of the same operations. Pip is a package manager, and Virtualenv is an 
environment manager. Conda is both.

=====================================   ========================================================   ========================================================================   ========================================================
Task                                    Conda package and environment manager command              Pip package manager command                                                Virtualenv environment manager command
=====================================   ========================================================   ========================================================================   ========================================================
Install a package                       ``conda install $PACKAGE_NAME``                            ``pip install $PACKAGE_NAME``                                              X
Update a package                        ``conda update --name $ENVIRONMENT_NAME $PACKAGE_NAME``                      ``pip install --upgrade $PACKAGE_NAME``                                    X
Update package manager                  ``conda update conda``                                     Linux/OSX: ``pip install -U pip`` Win: ``python -m pip install -U pip``    X
Uninstall a package                     ``conda remove --name $ENVIRONMENT_NAME $PACKAGE_NAME``    ``pip uninstall $PACKAGE_NAME``                                            X
Create an environment                   ``conda create --name $ENVIRONMENT_NAME python``           X                                                                          ``cd $ENV_BASE_DIR; virtualenv $ENVIRONMENT_NAME``
Activate an environment                 ``source activate $ENVIRONMENT_NAME``                      X                                                                          ``source $ENV_BASE_DIR/$ENVIRONMENT_NAME/bin/activate``
Deactivate an environment               ``source deactivate``                                      X                                                                          ``deactivate``
Search available packages               ``conda search $SEARCH_TERM``                              ``pip search $SEARCH_TERM``                                                X
Install package from specific source    ``conda install --channel $URL $PACKAGE_NAME``             ``pip install --index-url $URL $PACKAGE_NAME``                             X
List installed packages                 ``conda list --name $ENVIRONMENT_NAME``                    ``pip list``                                                               X
Create requirements file                ``conda list --export``                                    ``pip freeze``                                                             X
List all environments                   ``conda info --envs``                                      X                                                                          Install virtualenv wrapper, then ``lsvirtualenv``
Install other package manager           ``conda install pip``                                      ``pip install conda``                                                      X
Install Python                          ``conda install python=x.x``                               X                                                                          X
Update Python                           ``conda update python`` *                                  X                                                                          X
=====================================   ========================================================   ========================================================================   ========================================================

* ``conda update python`` updates to the most recent in the series, so any Python 2.x would update to the latest 2.x, and any Python 3.x to the latest 3.x.

.. Show what files a package has installed ``pip show --files $PACKAGE_NAME``  not possible
.. Print details on an individual package ``pip show $PACKAGE_NAME``  not possible
.. List available environments   not possible   ``conda info -e``
.. #user will want to pass that through ``tail -n +3 | awk '{print $1;}'``
