Conda

Introduction
This page is meant to introduce Conda as a package, dependency, and environment manager for FreeCAD.

Currently this page mainly catalogs links to relevant FreeCAD forum discussion and other places on the web, but the hope is to document the salient points from those links into this page.

Motivation
The motivation for using Conda is multi-fold, as is Conda's purpose.

Let's break it down.

Conda as a Package Manager
First, Conda is a package manager -- similar to  or.

This means we can install packages with a a simple  from various channels such as conda-forge.

Conda Forge is analogous to the Python Package Index (PyPI), a community channel made up of thousands of contributors, and serves freecad as a conda package.

Conda as a Dependency Manager
Next, Conda is a dependency manager, also similar to  or.

Conda can manage the dependencies and install the dependencies for a project like FreeCAD.

Why not just use ? works really well for managing the dependencies of projects that only use python.

Conda works for multiple languages, and is therefore better suited for managing the dependencies of projects like FreeCAD that have dependencies across a variety of languages like C / C++ and Python.

Conda as a Environment Manager
Conda has the concept of an environment which is the unique combination of packages and versions needed to run a piece of software. For example, a FreeCAD workbench.

With environments, you can easily "activate" and "deactivate" them, or switch between versions of packages needed for particular pieces of software.

This is useful for testing how a workbench behaves with a particular set of packages. For example, how does a workbench behave in FreeCAD 18.4 vs 19?

Conda environments allow you to reproduce the same exact environment on different machines.

For example, multiple local developer machines, or a remote build-server hosted by Travis CI.

Installation
Install Miniconda.

Installing FreeCAD Using Conda
First, since you can easily create dedicated environments in conda, it's recommended to create one for FreeCAD.

The  command allows you to create an environment from a list of specified packages. In our case, we want to create an environment called "fcenv" (short for FreeCAD environment) from the  package, and tell conda to search for the   package using the   channel.

Tip: You can alternatively tell  to always search   when installing packages with the following command:

The weekly builds can be installed from the  channel:

FreeCAD Forum Discussion

 * Let's talk about Conda
 * Packaging solution: (ana)conda
 * FreeCAD Conda Distribution