Should I use Conda or Conda Forge when creating Anaconda Python environments?
<p>I understand that conda-forge was initiated to build and maintain packages. </p>

<p>But when building Anaconda Python environments, how do we know when to use 'conda-forge' verses 'conda install'  if a package exists in both repositories? Django for example can be installed with both 'conda install' and 'conda-forge'.</p>

<p>Which one should we use? Does it matter?</p>

<p>Can someone give me a very brief 'conda-forge for dummies' lesson? The docs are very scant.</p>

<p>Thanks</p>

<p>The short answer is that, in my experience generally, it doesn't matter which you use.</p>

<p>The long answer:</p>

<p>So <code>conda-forge</code> is an additional channel from which packages may be installed. In this sense, it is not any more special than the default channel, or any of the other hundreds (thousands?) of channels that people have posted packages to. You can add your own channel if you sign up at <a href="https://anaconda.org" rel="nofollow">https://anaconda.org</a> and upload your own Conda packages.</p>

<p>Here we need to make the distinction, which I think you're not clear about from your phrasing in the question, between <code>conda</code>, the cross-platform package manager, and <code>conda-forge</code>, the package channel. Continuum IO, the main developers of the <code>conda</code> software also maintain a separate channel of packages, which is the default when you type <code>conda install packagename</code> without changing any options.</p>

<p>There are two ways to change the options for channels. One is to specify a channel every time you install a package:</p>

<pre><code>conda install -c some-channel packagename
</code></pre>

<p>Of course, the package has to exist on that channel. If you find yourself using the same channel often, then you might want to add it to your configuration. You can write</p>

<pre><code>conda config --add channels some-channel
</code></pre>

<p>to add the channel <code>some-channel</code> to the top of the <code>channels</code> configuration list. This gives <code>some-channel</code> the highest priority (priority determines (<a href="http://conda.pydata.org/docs/channels.html" rel="nofollow">in part</a>) which channel is selected when more than one channel has a particular package). To add the channel to the end of the list and give it the lowest priority, type</p>

<pre><code>conda config --append channels some-channel
</code></pre>

<p>With all of that said, there are three main reasons to use the <code>conda-forge</code> channel instead of the <code>defaults</code> channel maintained by Continuum:</p>

<ol>
<li>Packages on <code>conda-forge</code> <em>may</em> be more up-to-date than those on the <code>defaults</code> channel</li>
<li>There are packages on the <code>conda-forge</code> channel that aren't available from <code>defaults</code></li>
<li>You would prefer to use a dependency such as <code>openblas</code> (from <code>conda-forge</code>) instead of <code>mkl</code> (from <code>defaults</code>).</li>
</ol>

python conda