Date: 2023-02-21
For some reason, we can't use anaconda or miniconda in a normal way anymore, otherwise our purse will get hurt. Normally, we download python packages from anaconda's defaults channel, which is maintained by anaconda's official team. Now we need to stop downloading from the "defaults" channel. Instead, we have to turn to "conda-forge" channel.
There are 3 ways to handle this issue, which will be expounded below. The first way is specially suggested.
Before introducing mambaforge, we have to know something about miniforge.
miniforge is a variation for miniconda specifit to "conda-forge" channel. Everything is the same as miniconda when we use miniforge, the only difference is that it downloads python packages from the "conda-forge" channel by default. And that's what we want, indeed.
Then what's the difference between mambaforge and miniforge? And why we suggest it more than miniforge?
Actually, when we use these two tools, there is almost no difference between them. Same as miniforge, mambaforge also uses conda-forge as the default channel to download packages. Every command of mambaforge remains consistent with that of condaforge. The tiny difference is to simply replace conda with mamba, when we try to do something with the python packages.
There are some examples to prove it in the following.
E.g., to install a package:
### for installing a package, in `condaforge`, we have:
conda install scipy
### in `mambaforge`, we have:
mamba install scipyE.g., to create a virtual environment:
### create & enter a new virtual enviroment in `condaforge`:
conda create -n mywork python=3.10 --yes --no-default-packages
conda activate mywork
### while in `mambaforge`:
mamba create -n mywork python=3.10 --yes --no-default-packages
mamba activate myworkHere are a full list of shared commands between mamba and conda:
### supported by both `mamba` & `conda`:
install, create, list, search, run, info, clean, activate and deactivateThe essential difference lies here: mambaforge uses C/C++ language to implement some functions within the package manager program. For functions such as packages' downloading & environment resolving, those C/C++ codes bring the package manager with higher efficiency and versatility. Basically, we can say that, mambaforge can save much of your time while installing python packages, for example, it supports multi-thread downloading therefore the downloading procedure goes faster, and its environment resolving is much faster than conda, etc.
If you have already installed anaconda/miniconda, to avoid potential confilicts with mambaconda, it's better to uninstall it.
Here are several steps to uninstall it.
-
Remove
anaconda/minicondarelated folder:rm -rf ~/anaconda/ ### or rm -rf ~/miniconda/ rm -rf ~/.conda/
-
Remove configuration file:
rm -f ~/.condarc -
Delete some sentences within
.bashrcor.bash_profilelike the following (if there are):# >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/home/albus/Downloads/yes/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/home/albus/Downloads/yes/etc/profile.d/conda.sh" ]; then . "/home/albus/Downloads/yes/etc/profile.d/conda.sh" else export PATH="/home/albus/Downloads/yes/bin:$PATH" fi fi unset __conda_setup if [ -f "/home/albus/Downloads/yes/etc/profile.d/mamba.sh" ]; then . "/home/albus/Downloads/yes/etc/profile.d/mamba.sh" fi # <<< conda initialize <<<
Then run command:
source ~/.bashrc ### or source ~/.bash_profile
or just close your terminal & restart it.
Until now, anaconda/miniconda is totally removed from your computer.
-
Go to this page, choose a suitable version to download. In my case, I choose Mambaforge-Linux-x86_64. You can download it by whatever tool you wish, e.g. using
wget. Open terminal, run following commands:)cd ~/Downloads/ ### or any other common folder wget https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh ### then install it sh Mambaforge-Linux-x86_64.sh
-
After installation, close your terminal and restart it to make sure the bash environment is set up correctly. You should see "
(base)" in front of each prompt input line.But in some cases, if you run any
conda/mambacommand likeconda list/mamba list, the terminal pops an error like "conda/mamba: command not found", then your installation is not complete. For this error, we can solve it by re-init ourmamba/condaenvironment as the following:# In the terminal # Firstly let's re-init our `mamba/conda` environment, by which some codes will be writen in `~/.bashrc` file. ~/mambaforge/bin/mamba init # Then we refresh our terminial enviroment source ~/.bashrc
The above two simple bash commands should be enough to complete the installation now. However, if it still reports an error like
conda/mamba: command not foundwhen you typeconda/mambacommand in the terminal, then we can create soft links to thecondaandmambacommands.ln -s ~/mambaforge/bin/conda /usr/bin/conda ln -s ~/mambaforge/bin/mamba /usr/bin/mamba ### or ln -s ~/mambaforge/bin/conda /usr/local/bin/conda ln -s ~/mambaforge/bin/mamba /usr/local/bin/mamba
Now if you type
condaormambaagain in the terminal, it should work properly.
Since installation is finished, we can check it a bit.
Firstly, let's see if the packages are from conda-forge channel:
### make the `conda list` command show the `Channel` column
conda config --set show_channel_urls yes
conda list
### output should look like the following:
# Name Version Build Channel
# _libgcc_mutex 0.1 conda_forge conda-forge
# _openmp_mutex 4.5 2_gnu conda-forge
# appdirs 1.4.4 pyh9f0ad1d_0 conda-forge
# ...
# ...As we can see, now the packages are all from conda-forge channel.
Then, let's install some popular python packages and test it:
mamba install scipy pandas
python -c "import scipy"
### Nothing should be printed here if success.Here is another example of installing CERN-ROOT package, which is used very often in Physics:
mamba install root
python -c 'from ROOT import TCanvas'If nothing is printed here, it means the packages are installed without any error, then all is fine.
Now everything works well with mambaforge.
As mentioned before, mambaforge and miniforge are quite similar package tools, between which the major difference is that mambaforge is faster for the installation of python packages. However, if you insist on using miniforge, it's still ok.
The installation and setup for miniforge is actually the same as that formambaforge.
-
Go to this page, choose a suitable version to download. In my case, I choose Miniforge3-Linux-x86_64.
Open terminal and run:
cd ~/Downloads ### or any other common folder wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh ### then install it sh Miniforge3-Linux-x86_64.sh
-
In some cases, if you run any
condacommand likeconda list, the terminal pops an error like "conda: command not found", then your installation is not complete. For this error, we need to create a soft link to thecondacommand:ln -s ~/miniforge3/bin/conda /usr/bin/conda ### or ln -s ~/miniforge3/bin/conda /usr/local/bin/conda
Now everything should be fine with
miniforge. -
Now test
miniforgea bit.Firstly, configure
condato makeconda listdisplayChannelcolumn in its output.conda config --set show_channel_urls yes
Then install a random python package:
conda install scipy
Now run
conda list, you should see that all the installed packages are from the "conda-forge" channel according to the values under theChannelcolumn of the output.
This way is used only when you are very obsessed with the original miniconda stuff.
Before everything below, please firstly make sure that you are using a network that is accessible to repo.anaconda.com!
The difference between anaconda and miniconda is just the amount of pre-installed packages. So you can safely start with miniconda. If you haven't installed miniconda, firstly install it (requires non-blocked network access).
-
Go to webpage: https://docs.conda.io/en/latest/miniconda.html, choose the correct version to download. Here my choice is: Miniconda3 macOS Intel x86 64-bit bash
-
Install the downloaded package, according to the instructions. e.g. by doing
sh Miniconda3-latest-MacOSX-x86_64.sh
### or(on Linux)
sh Miniconda3-latest-Linux-aarch64.sh- In some cases the soft link for
condacommand is not created properly, then you have to create it like:
ln -s ~/miniconda3/bin/conda /usr/bin/conda
### or
ln -s ~/miniconda3/bin/conda /usr/local/bin/conda- Now enter
conda -V, to see if a correct version message is printed. In my case, it prints:conda 23.1.0, which meansminicondais installed correctly. Also, your terminal may show a "(base)" prefix before each prompt input, which means it has entered the virtual environment that is created byminicondaautomatically.
By default, either anaconda or miniconda installation file already contain some basic python packages from defaults channel within itself. Once you download the installation file and finish the installation, some local python packages will be extracted & installed along the procedures that you install miniconda. It means, even though you turn off your network, these python packages from defaults channel are still there. So we have to do something regarding this issue.
Firstly, restart your terminal, and please enter the following line:
conda config --set show_channel_urls yesAnd look at the last column "Channel" of the output of the following command:
conda listHere defaults means anaconda.com, and conda-forge means anaconda.org. The latter is what we want all packages to be. If we don't do anything, all packages will get installed or updated from the defaults channel. This is something that should be avoided. So we need to remove the defaults channel first and then update using conda-forge channel.
Therefore, we need to change the configuration of miniconda, to make it avoid downloading packages from the "defaults" channel.
To do this, run the following commands one by one in your terminal:
# now it should include `defaults` channel
conda config --show-sources
### results should be like
# channels:
# - defaults
# show_channel_urls: true
# Add new channel
conda config --add channels conda-forge
# delete the "defaults" channel
conda config --remove channels 'defaults'
# now it should only include `conda-forge` channel
conda config --show-sources
### results should be like
# channels:
# - conda-forge
# show_channel_urls: trueFinally & very importantly, update all packages:
conda update --allNow you can check the results using conda list to see if all pacakges are showing conda-forge as channel.
From now on you can install any python packages you like:
conda install scipyand miniconda will download scipy from the "conda-forge" channel.
By the way, you can create a new virtual environment:
conda create -n mywork python=3.10 --yes --no-default-packages
conda activate mywork
conda install scipy pandasAll packages will be downloaded from "conda-forge" channel.
Please be noted that, the 3rd way is NOT able to change the channel for one special package to conda-forge, which is conda itself. This means in the future, when you update all packages, the package conda will still be downloaded from defaults channel; and when you use a network that blocks defaults channel, update for the package conda will fail. However, we have figured out a small trick to solve this, just run following commands:
### roll package `conda` back to a slightly older version, let's say: 22.9.0
conda install conda=22.9.0
conda update conda
conda listNow all packages including conda should be from the channel conda-forge.
Enjoy using conda!