Introduction to Conda Beginner
Conda is an open-source package manager and environment manager that runs on Windows, macOS, and Linux. It quickly installs, runs, and updates packages and their dependencies, while letting you create isolated environments to prevent conflicts between projects.
What is Conda?
Conda is a cross-platform tool that solves two fundamental problems in software development:
-
Package Management
Installing, updating, and removing software packages and all their dependencies. Unlike pip (which only handles Python packages), Conda manages packages for Python, R, C++, Java, Fortran, and many other languages.
-
Environment Management
Creating isolated environments where you can install specific versions of packages without affecting other projects or your system Python installation.
Conda vs pip vs venv vs Poetry
Understanding how Conda compares to other Python tools helps you choose the right tool for your workflow:
| Feature | Conda | pip | venv | Poetry |
|---|---|---|---|---|
| Package manager | Yes | Yes | No | Yes |
| Environment manager | Yes | No | Yes | Yes |
| Language support | Python, R, C++, Java, etc. | Python only | Python only | Python only |
| Binary packages | Yes (pre-compiled) | Wheels only | N/A | Wheels only |
| Dependency resolver | SAT solver | Resolver (pip 20.3+) | N/A | SAT solver |
| Non-Python deps | Yes (CUDA, MKL, etc.) | No | No | No |
| Lock files | Via conda-lock | Via pip-tools | N/A | Built-in |
| Best for | Data science, ML, scientific computing | General Python development | Simple isolation | Application development |
Multi-Language Support
One of Conda's greatest strengths is its ability to manage packages across multiple programming languages and system-level dependencies:
| Language / Tool | Example Packages |
|---|---|
| Python | numpy, pandas, scikit-learn, tensorflow, pytorch |
| R | r-base, r-tidyverse, r-ggplot2, r-shiny |
| C/C++ | gcc, cmake, boost, opencv |
| Java | openjdk, maven |
| System Libraries | cudatoolkit, mkl, openssl, libffi |
Conda, Anaconda, and Miniconda
These three terms are often confused. Here is how they relate:
- Conda — The package and environment manager (the CLI tool itself)
- Miniconda — A minimal installer that includes only Conda, Python, and a few essential packages (~80 MB). Recommended for most users.
- Anaconda — A full distribution that includes Conda plus 250+ pre-installed data science packages (~3 GB). Includes Jupyter, NumPy, Pandas, Matplotlib, and more out of the box.
Think of it this way: Miniconda gives you just Conda so you install only what you need, while Anaconda gives you everything pre-installed. Both use Conda as their package manager.
Why Use Conda?
Dependency Resolution
Conda uses a SAT (satisfiability) solver to find compatible versions of all packages. When you install a package, Conda checks all dependencies and their dependencies, ensuring everything works together without conflicts.
Binary Packages
Conda distributes pre-compiled binary packages, so you never need to compile C extensions from source. This is especially valuable for packages like NumPy, SciPy, and TensorFlow that depend on optimized math libraries (MKL, BLAS, LAPACK).
Cross-Platform
The same Conda commands work on Windows, macOS, and Linux. An environment.yml file created on one platform can recreate the same environment on another (with platform-appropriate binaries).
Non-Python Dependencies
Need CUDA for GPU computing? A specific version of OpenSSL? A C compiler? Conda handles these system-level dependencies that pip simply cannot manage.
# Conda installs CUDA toolkit as a regular package $ conda install cudatoolkit=11.8 # No need to install CUDA system-wide! # Each environment can have its own CUDA version
Quick Start Preview
Here is a taste of what working with Conda looks like:
# Create a new environment with Python 3.11 $ conda create -n myproject python=3.11 # Activate the environment $ conda activate myproject # Install packages $ conda install numpy pandas scikit-learn # Check what's installed $ conda list # Export for reproducibility $ conda env export > environment.yml
Ready to Get Started?
Now that you understand what Conda is and why it is useful, let's install it on your system.
Next: Installation →
Lilly Tech Systems