I’m trying to get binder to run some code that require a python package called camb (Python CAMB — Code for Anisotropies in the Microwave Background (CAMB) 1.3.4 documentation). The package is essentially a wrapper for some old fortran code and when installing it will often give the error ‘Exception: you need ifort or gfortran 6 or higher to compile (found: none)’ when trying to install. This is fine when running the code locally as I can just install the necessary compilers on my own machine. However, I have no idea how to tell/get binder to also install the necessary compilers as they aren’t a python package. Any advice would be appreciated.
You’ll want to use
apt.txt to get the compiler. See about the
apt.txt configuration file here.
I have binderized examples that get
gfortran that way:
Or alternately, make use of the already-in-the-container
mamba with an
channels: - conda-forge dependencies: - camb
Per build, this may represent a time savings, comparing:
- run the
- download the apt packages
- install all the app packages
- solve with pip
- download the pip packages
- compile the fortran code
- solve with
- download the
- install the
That seems to have worked. Thank you!
Good point. I should have also included a pointer to your excellent coverage of the advantages of switching to the use of mamba via
environment.yml here for such cases.
For those who aren’t aware of mamba but maybe have seen conda (Anaconda/Miniconda) around, mamba is a fast conda package builder because it reimplents the conda package manager in C++, see here for more details about it.
environment.yml option is in the Binder documentation here.