Why -c conda-forge?

When you looking for tutorials on how to install things with conda, you might have came across commands like this:

conda install -c conda-forge package_names

Sometimes you wonder what is the -c conda-forge parameter do? What happens if I just use the default setting and conda install package_names?

Sometimes you try it, and it works just fine. So why the extra parameter?

This might help you understand it:

The conda install -c parameter lets you choose the 'channel' where packages are installed from. A 'channel' is where packages are stored on the internet, aka where your computer downloads the package from when you conda install.

The default channel (when you use conda install without the -c parameter) is anaconda, and conda install -c conda-forge uses the conda-forge channel. And there are many other channels you can use, you can even build your own.

But what's the difference between anaconda channel and conda-forge channel?

From what I've gathered in stackoverflow and reddit, it doesn't really matter much which ones you use. There are some differences:

  • conda-forge is maintained by the community while anaconda is maintained by Anaconda Inc. They may charge commercial users for using anaconda channel

  • conda-forge is sometimes more up-to-date with packages and have more packages available

And these are the differences. I would stick with -c conda-forge.