Install miniconda on MacOS

One of the most used tools in the data science field (alongside R) is Python with its enormous amount of libraries like NumPy, pandas or SciPy.

Alongside these there is also the web frontend Jupyter that makes it easy to create interactive Python notebooks which are locally served on your system. If this is not your cup of tea, there are several existing hosted solutions like Google Colaboratory

For compatibility reasons MacOS has only Python 2 installed per default (even though Python 3 will be installed alongside XCode). While there are official installers for Python 3 on MacOS, there are other, easier and cleaner ways to achieve this.

This can be done using a package manager like Homebrew or a Python distribution like Anaconda.

Installing Anaconda has the benefit that all the Python packages (as Python 3 itself) will be installed in the user directory and thus can be easily removed or reinstalled.

While Anaconda is a complete package with a nice GUI of the anaconda-navigator it's quite bloated and has probably more packages than a upcoming data scientists needs. Here you can use a minimal version of Anaconda called miniconda (which is a minimal installer for conda package manager).

Let's see how to quickly do it on MacOS!

Prerequisite

  • a MacOS system running MacOS Mojave or newer.
  • Download & Install Miniconda package

  • obtain the latest Miniconda MacOSX installer. Choose here the shell script installer for Python 3: Miniconda3 MacOSX 64-bit bash
  • open the MacOS Terminal and make the just downloaded installer executable with chmod:
  • chmod +x Miniconda3-latest-MacOSX-x86_64.sh
    
  • execute the installer and follow the provided instruction (like accepting the license terms):
  • ./Miniconda3-latest-MacOSX-x86_64.sh
    
  • Per Default miniconda will be installed in /Users/[username]/miniconda3. This can be changed in the installer.
  • Do you accept the license terms? [yes|no]
    [no] >>> yes
    
    Miniconda3 will now be installed into this location:
    /Users/kris/miniconda3
    
      - Press ENTER to confirm the location
      - Press CTRL-C to abort the installation
      - Or specify a different location below
    
    [/Users/kris/miniconda3] >>>
    PREFIX=/Users/kris/miniconda3
    Unpacking payload ...
    Collecting package metadata (current_repodata.json): done
    Solving environment: done
    
    ## Package Plan ##
    
      environment location: /Users/kris/miniconda3
    
      added / updated specs:
        - brotlipy==0.7.0=py38h9ed2024_1003
        - ca-certificates==2020.10.14=0
        - certifi==2020.6.20=pyhd3eb1b0_3
        - cffi==1.14.3=py38h2125817_2
        - chardet==3.0.4=py38hecd8cb5_1003
        - conda-package-handling==1.7.2=py38h22f3db7_0
        - conda==4.9.2=py38hecd8cb5_0
        - cryptography==3.2.1=py38hbcfaee0_1
        - idna==2.10=py_0
        - libcxx==10.0.0=1
        - libedit==3.1.20191231=h1de35cc_1
        - libffi==3.3=hb1e8313_2
        - ncurses==6.2=h0a44026_1
        - openssl==1.1.1h=haf1e3a3_0
        - pip==20.2.4=py38hecd8cb5_0
        - pycosat==0.6.3=py38h1de35cc_1
        - pycparser==2.20=py_2
        - pyopenssl==19.1.0=pyhd3eb1b0_1
        - pysocks==1.7.1=py38_1
        - Python.app==2=py38_10
        - Python==3.8.5=h26836e1_1
        - readline==8.0=h1de35cc_0
        - requests==2.24.0=py_0
        - ruamel_yaml==0.15.87=py38haf1e3a3_1
        - setuptools==50.3.1=py38hecd8cb5_1
        - six==1.15.0=py38hecd8cb5_0
        - sqlite==3.33.0=hffcf06c_0
        - tk==8.6.10=hb0a8c7a_0
        - tqdm==4.51.0=pyhd3eb1b0_0
        - urllib3==1.25.11=py_0
        - wheel==0.35.1=pyhd3eb1b0_0
        - xz==5.2.5=h1de35cc_0
        - yaml==0.2.5=haf1e3a3_0
        - zlib==1.2.11=h1de35cc_3
    
    The following NEW packages will be INSTALLED:
    
      brotlipy           pkgs/main/osx-64::brotlipy-0.7.0-py38h9ed2024_1003
      ca-certificates    pkgs/main/osx-64::ca-certificates-2020.10.14-0
      certifi            pkgs/main/noarch::certifi-2020.6.20-pyhd3eb1b0_3
      cffi               pkgs/main/osx-64::cffi-1.14.3-py38h2125817_2
      chardet            pkgs/main/osx-64::chardet-3.0.4-py38hecd8cb5_1003
      conda              pkgs/main/osx-64::conda-4.9.2-py38hecd8cb5_0
      conda-package-han~ pkgs/main/osx-64::conda-package-handling-1.7.2-py38h22f3db7_0
      cryptography       pkgs/main/osx-64::cryptography-3.2.1-py38hbcfaee0_1
      idna               pkgs/main/noarch::idna-2.10-py_0
      libcxx             pkgs/main/osx-64::libcxx-10.0.0=1
      libedit            pkgs/main/osx-64::libedit-3.1.20191231-h1de35cc_1
      libffi             pkgs/main/osx-64::libffi-3.3-hb1e8313_2
      ncurses            pkgs/main/osx-64::ncurses-6.2-h0a44026_1
      openssl            pkgs/main/osx-64::openssl-1.1.1h-haf1e3a3_0
      pip                pkgs/main/osx-64::pip-20.2.4-py38hecd8cb5_0
      pycosat            pkgs/main/osx-64::pycosat-0.6.3-py38h1de35cc_1
      pycparser          pkgs/main/noarch::pycparser-2.20-py_2
      pyopenssl          pkgs/main/noarch::pyopenssl-19.1.0-pyhd3eb1b0_1
      pysocks            pkgs/main/osx-64::pysocks-1.7.1-py38_1
      Python             pkgs/main/osx-64::Python-3.8.5=h26836e1_1
      Python.app         pkgs/main/osx-64::Python.app-2-py38_10
      readline           pkgs/main/osx-64::readline-8.0-h1de35cc_0
      requests           pkgs/main/noarch::requests-2.24.0=py_0
      ruamel_yaml        pkgs/main/osx-64::ruamel_yaml-0.15.87-py38haf1e3a3_1
      setuptools         pkgs/main/osx-64::setuptools-50.3.1-py38hecd8cb5_1
      six                pkgs/main/osx-64::six-1.15.0=py38hecd8cb5_0
      sqlite             pkgs/main/osx-64::sqlite-3.33.0=hffcf06c_0
      tk                 pkgs/main/osx-64::tk-8.6.10-hb0a8c7a_0
      tqdm               pkgs/main/noarch::tqdm-4.51.0-pyhd3eb1b0_0
      urllib3            pkgs/main/noarch::urllib3-1.25.11-py_0
      wheel              pkgs/main/noarch::wheel-0.35.1-pyhd3eb1b0_0
      xz                 pkgs/main/osx-64::xz-5.2.5-h1de35cc_0
      yaml               pkgs/main/osx-64::yaml-0.2.5=haf1e3a3_0
      zlib               pkgs/main/osx-64::zlib-1.2.11=h1de35cc_3
    
    Preparing transaction: done
    Executing transaction: done
    installation finished.
    Do you wish the installer to initialize Miniconda3
    by running conda init? [yes|no]
    [yes] >>> yes
    no change     /Users/kris/miniconda3/condabin/conda
    no change     /Users/kris/miniconda3/bin/conda
    no change     /Users/kris/miniconda3/bin/conda-env
    no change     /Users/kris/miniconda3/bin/activate
    no change     /Users/kris/miniconda3/bin/deactivate
    no change     /Users/kris/miniconda3/etc/profile.d/conda.sh
    no change     /Users/kris/miniconda3/etc/fish/conf.d/conda.fish
    no change     /Users/kris/miniconda3/shell/condabin/Conda.psm1
    no change     /Users/kris/miniconda3/shell/condabin/conda-hook.ps1
    no change     /Users/kris/miniconda3/lib/Python3.8/site-packages/xontrib/conda.xsh
    no change     /Users/kris/miniconda3/etc/profile.d/conda.csh
    modified      /Users/kris/.bash_profile
    
    ==> For changes to take effect, close and re-open your current shell. <==
    
    If you'd prefer that conda's base environment not be activated on startup,
       set the auto_activate_base parameter to false:
    
    conda config --set auto_activate_base false
    
    Thank you for installing Miniconda3!
    

    The newly created bin directory will be added to the user PATH in his __.bash_profile__ and thus the newly installed Python 3 can be directly called:

    Image 1

    Now that miniconda with the conda package manager has been installed you can use the conda command to create a new conda environment and/or install new Python packages like jupyter.

    Conclusion

    In this article we've installed miniconda in MacOS which provides an up to date Python 3 installation alongside the conda package manager. From here on a huge amount of Python packages can be installed using conda.