Conda: Difference between revisions

From FreeCAD Documentation
m (Add more links to See Also section)
(Add Motivation section)
Line 2: Line 2:
This page is meant to introduce Conda as a package, dependency, and environment manager for FreeCAD.
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.
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 <code>apt</code> or <code>pip</code>.

This means we can install '''packages''' with a a simple <code>conda install</code> from various [https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/channels.html#what-is-a-conda-channel channels] such as [https://conda-forge.org/ conda-forge].

Conda Forge is analogous to [https://pypi.org/ the Python Package Index (PyPI)], a community channel made up of thousands of contributors, and serves [https://anaconda.org/conda-forge/freecad freecad] as a conda package.

===Conda as a Dependency Manager===
Next, Conda is a dependency manager, also similar to <code>apt</code> or <code>pip</code>.

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

Why not just use <code>pip</code>? <code>pip</code> 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 [https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/environments.html 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" environments, or switch between versions of packages needed for particular workbenches, or for testing how a workbench behaves with a particular set of package versions. For example, how does a workbench behave in FreeCAD 18.4 vs 19?


==FreeCAD Forum Discussion==
==FreeCAD Forum Discussion==

Revision as of 00:16, 9 June 2020

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 apt or pip.

This means we can install packages with a a simple conda install 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 apt or pip.

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

Why not just use pip? pip 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" environments, or switch between versions of packages needed for particular workbenches, or for testing how a workbench behaves with a particular set of package versions. For example, how does a workbench behave in FreeCAD 18.4 vs 19?

FreeCAD Forum Discussion

See Also