Conda (package manager)

Last updated
Stable release
24.3.0 [1] / 18 March 2024;30 days ago (18 March 2024)
Repository
Written in Python
License BSD
Website conda.io   OOjs UI icon edit-ltr-progressive.svg

Conda is an open-source, [2] cross-platform, [3] language-agnostic package manager and environment management system. It was originally developed to solve package management challenges faced by Python data scientists, and today is a popular package manager for Python and R. [4] [5] At first part of Anaconda Python distribution developed by Anaconda Inc. Later, it was spun out as a separate package, [6] released under the BSD license. [2] [7] [8] [9] [10] [11] The Conda package and environment manager is included in all versions of Anaconda, Miniconda, [12] and Anaconda Repository. [13] Conda is a NumFOCUS affiliated project. [14]

Contents

Features

As a package manager, Conda allows users to install different versions of binary software packages and their required software dependencies appropriate for their computing platform from a software repository. Conda checks everything that has been installed, any version limitations that the user specifies (for example, the user wants a specific package to be at least version 2.1.3) and determines a set of versions for all requested packages and their dependencies that makes the total set compatible with one another. If there is no set of compatible dependencies, it will tell the user that the requested combination of software packages at the requested versions is not possible.

Secondly, Conda allows users to create such a set of software packages in isolation from the rest of the computing platform, in what Conda calls an environment. [15] This allows the user to create various sets of software packages for different projects. When the users switches between those projects, they switch to the relevant environment, thereby avoiding the re-installation or removal of conflicting packages. To further facilitate the setup of such environments, Conda can also install Python, the interpreter for the software packages itself. [16]

Conda is written in the Python programming language, but can manage projects containing code written in any language (e.g., R), including multi-language projects.

A popular Conda channel for bioinformatics software is Bioconda, which provides multiple software distributions for computational biology. [17] [18]

See also

Related Research Articles

<span class="mw-page-title-main">Package manager</span> Software tools for handling software packages

A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.

yum (software) Free and open-source command-line package management utility

The Yellowdog Updater Modified (YUM) is a free and open-source command-line package-management utility for computers running the Linux operating system using the RPM Package Manager. Though YUM has a command-line interface, several other tools provide graphical user interfaces to YUM functionality.

<span class="mw-page-title-main">Portage (software)</span> Gentoo package management system

Portage is a package management system originally created for and used by Gentoo Linux and also by ChromeOS, Calculate, Sabayon, and Funtoo Linux among others. Portage is based on the concept of ports collections. Gentoo is sometimes referred to as a meta-distribution due to the extreme flexibility of Portage, which makes it operating-system-independent. The Gentoo/Alt project was concerned with using Portage to manage other operating systems, such as BSDs, macOS and Solaris. The most notable of these implementations is the Gentoo/FreeBSD project.

Dependency hell is a colloquial term for the frustration of some software users who have installed software packages which have dependencies on specific versions of other software packages.

Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by The Apache Software Foundation, where it was formerly part of the Jakarta Project.

eric (software) Python development environment

eric is a free integrated development environment (IDE) used for computer programming. Since it is a full featured IDE, it provides by default all necessary tools needed for the writing of code and for the professional management of a software project.

<span class="mw-page-title-main">LAMP (software bundle)</span> Acronym for a common web hosting solution

LAMP is an acronym denoting one of the most common software stacks for the web's most popular applications. Its generic software stack model has largely interchangeable components.

A software repository, or repo for short, is a storage location for software packages. Often a table of contents is also stored, along with metadata. A software repository is typically managed by source or version control, or repository managers. Package managers allow automatically installing and updating repositories, sometimes called "packages".


This is a comparison of notable free and open-source configuration management software, suitable for tasks like server configuration, orchestration and infrastructure as code typically performed by a system administrator.

<span class="mw-page-title-main">Fedora Linux</span> Linux distribution by Fedora Project

Fedora Linux is a Linux distribution developed by the Fedora Project. It was originally developed in 2003 as a continuation of the Red Hat Enterprise Linux project. It contains software distributed under various free and open-source licenses and aims to be on the leading edge of open-source technologies. It is now the upstream source for CentOS Stream and Red Hat Enterprise Linux.

Nix is a cross-platform package manager. It employs a model in which software packages are each installed into unique directories with immutable contents. These directory names correspond to cryptographic hashes that take into account all dependencies of a package, including other packages managed by Nix.

<span class="mw-page-title-main">RPM Package Manager</span> Package management system

RPM Package Manager (RPM) is a free and open-source package management system. The name RPM refers to the .rpm file format and the package manager program itself. RPM was intended primarily for Linux distributions; the file format is the baseline package format of the Linux Standard Base.

<span class="mw-page-title-main">Python Package Index</span> Software repository

The Python Package Index, abbreviated as PyPI and also known as the Cheese Shop, is the official third-party software repository for Python. It is analogous to the CPAN repository for Perl and to the CRAN repository for R. PyPI is run by the Python Software Foundation, a charity. Some package managers, including pip, use PyPI as the default source for packages and their dependencies.

<span class="mw-page-title-main">Spyder (software)</span> IDE for scientific programming in Python

Spyder is an open-source cross-platform integrated development environment (IDE) for scientific programming in the Python language. Spyder integrates with a number of prominent packages in the scientific Python stack, including NumPy, SciPy, Matplotlib, pandas, IPython, SymPy and Cython, as well as other open-source software. It is released under the MIT license.

pip (package manager) Package management system for Python

pip is a package-management system written in Python and is used to install and manage software packages. The Python Software Foundation recommends using pip for installing Python applications and its dependencies during deployment. Pip connects to an online repository of public packages, called the Python Package Index. Pip can be configured to connect to other package repositories, provided that they comply to Python Enhancement Proposal 503.

<span class="mw-page-title-main">Anaconda (Python distribution)</span> Distribution of the Python and R languages for scientific computing

Anaconda is a distribution of the Python and R programming languages for scientific computing, that aims to simplify package management and deployment. The distribution includes data-science packages suitable for Windows, Linux, and macOS. It is developed and maintained by Anaconda, Inc., which was founded by Peter Wang and Travis Oliphant in 2012. As an Anaconda, Inc. product, it is also known as Anaconda Distribution or Anaconda Individual Edition, while other products from the company are Anaconda Team Edition and Anaconda Enterprise Edition, neither of which are free.

<span class="mw-page-title-main">R package</span> Extensions to the R statistical programming language

R packages are extensions to the R statistical programming language. R packages contain code, data, and documentation in a standardised collection format that can be installed by users of R, typically via a centralised software repository such as CRAN. The large number of packages available for R, and the ease of installing and using them, has been cited as a major factor driving the widespread adoption of the language in data science.

References

  1. "Release 24.3.0". 18 March 2024. Retrieved 22 March 2024.
  2. 1 2 "Conda". conda.io. Retrieved 11 June 2019.
  3. "Building Conda Packages for Multiple Operating Systems". Pydannt. 29 January 2015. Retrieved 11 June 2019.
  4. Gorelick, Micha; Ozsvald, Ian (September 2014). High Performance Python: Practical Performant Programming for Humans (1st ed.). O'Reilly Media. p. 370. ISBN   978-1449361594.
  5. Jackson, Joab (5 February 2013). "Python gets a big data boost from DARPA". networkworld. Retrieved October 30, 2014.
  6. "What's the difference between Anaconda, conda, and Miniconda?". FAQ - Bioconda documentation. Retrieved 22 April 2020.
  7. "State of Conda, Oct. 2014". Pen and Pants. 9 October 2014. Retrieved 9 April 2015.
  8. Tony Ojeda; Sean Patrick Murphy; Benjamin Bengfort; Abhijit Dasgupta (25 September 2014). Practical Data Science Cookbook. Packt Publishing Ltd. ISBN   978-1783980253 . Retrieved 19 March 2015.
  9. Langtangen, Hans Petter (2014). A Primer on Scientific Programming with Python. Springer. ISBN   978-3642549595 . Retrieved 19 March 2015.
  10. Yves Hilpisch (11 December 2014). Python for Finance: Analyze Big Financial Data. O'Reilly Media. ISBN   9781491945391 . Retrieved 19 March 2015.
  11. "Continuum Analytics Launches Anaconda Server for Enterprise Package Management". Yahoo Finance. 30 January 2014. Retrieved 19 March 2015.
  12. "Miniconda". conda.io. Archived from the original on 2018-09-10. Retrieved 2018-07-11.
  13. "Anaconda repository". anaconda.org.
  14. "NumFOCUS Affiliated Projects". NumFOCUS. Retrieved 2021-10-25.
  15. "Managing environments — conda 24.3.1.dev40 documentation". conda.io. Retrieved 2024-04-14.
  16. "3. Managing Python". 2015. Archived from the original on 16 June 2015. Retrieved 16 Jun 2015. So now let's say you need Python 3 to learn programming, but you don't want to overwrite your Python 2.7 environment by updating Python. You can create and activate a new environment named snakes, and install the latest version of Python 3 as follows...
  17. Bioconda official website.
  18. Grüning, Bjorn; the Bioconda Team (27 October 2017). "Bioconda: A sustainable and comprehensive software distribution for the life sciences". bioRxiv   10.1101/207092 .

Further reading