问题
Conda and conda-forge are both Python package managers. What is the appropriate choice when a package exists in both repositories? Django, for example, can be installed with either, but the difference between the two is several dependencies (conda-forge has many more). There is no explanation for these differences, not even a simple README.
Which one should be used? Conda or conda-forge? Does it matter?
回答1:
The short answer is that, in my experience generally, it doesn't matter which you use.
The long answer:
So conda-forge 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 https://anaconda.org and upload your own Conda packages.
Here we need to make the distinction, which I think you're not clear about from your phrasing in the question, between conda, the cross-platform package manager, and conda-forge, the package channel. Anaconda Inc. (formerly Continuum IO), the main developers of the conda software, also maintain a separate channel of packages, which is the default when you type conda install packagename without changing any options.
There are two ways to change the options for channels. One is to specify a channel every time you install a package:
conda install -c some-channel packagename
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
conda config --add channels some-channel
to add the channel some-channel to the top of the channels configuration list. This gives some-channel the highest priority (priority determines (in part) 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
conda config --append channels some-channel
If you would like to remove the channel that you added, you can do so by writing
conda config --remove channels some-channel
See
conda config -h
for more options.
With all of that said, there are four main reasons to use the conda-forge channel instead of the defaults channel maintained by Anaconda:
- Packages on
conda-forgemay be more up-to-date than those on thedefaultschannel - There are packages on the
conda-forgechannel that aren't available fromdefaults - You would prefer to use a dependency such as
openblas(fromconda-forge) instead ofmkl(fromdefaults). - If you are installing a package that requires a compiled library (e.g., a C extension or a wrapper around a C library), it may reduce the chance of incompatibilities if you install all of the packages in an environment from a single channel due to binary compatibility of the base C library (but this advice may be out of date/change in the future).
回答2:
The conda-forge channel is where you can find packages that have been built for conda but yet to be part of the official Anaconda distribution.
Generally, you can use any of them.
回答3:
There are some Python libraries that you cannot install with a simple conda install since their channel is not available unless you apply conda-forge. From my experience, pip is more generic to look into different channel sources than conda.
For instance, if you want to install python-constraint you can do it via pip install but to install it via **cond **. you have to specify the channel - conda-forge.
conda install -c conda-forge python-constraint // works
but not
conda install python-constraint
来源:https://stackoverflow.com/questions/39857289/should-conda-or-conda-forge-be-used-for-python-environments