pythoninstallationinstallation-packagemamba

How do I resolve installation errors for installing Climada using Mamba?


I am trying to install Climada on my Mac. I have anaconda installed and python is as saved in /opt/anaconda3/bin/python (I believe it's python 3.11.8.

The Climada documentation says to create a virtual environment using Mamba.

mamba create -n climada_env -c conda-forge climada

Then it says you can activate the environment and start working.

I've tried this two ways, and failed both times.

First attempt: create a new virtual environment, install Mamba there. So far so good. Then I try to install Climada within that virtual environment using:

mamba install -c conda-forge climada 

The error I get is:

Pinned packages:

  - python=3.13

error    libmamba Could not solve for environment specs
    The following packages are incompatible
    ├─ climada =* * is installable with the potential options
    │  ├─ climada [3.3.2|4.0.0|4.0.1|4.1.0] would require
    │  │  └─ python =3.9 *, which can be installed;
    │  └─ climada [4.1.0|5.0.0] would require
    │     └─ python >=3.9,<3.12 * with the potential options
    │        ├─ python [3.10.0|3.10.1|...|3.11.9], which can be installed;
    │        ├─ python 3.12.0rc3 would require
    │        │  └─ _python_rc =* *, which does not exist (perhaps a missing channel);
    │        └─ python [3.9.0|3.9.1|...|3.9.9], which can be installed;
    └─ pin on python 3.13.* =* * is not installable because it requires
       └─ python =3.13 *, which conflicts with any installable versions previously reported.
critical libmamba Could not solve for environment specs

Second attempt: First I install Mamba in my base folder using

conda install -c conda-forge mamba

and then I create the new virtual env using the mamba create command above, taken from the Climada installation instructions. This time the error I get is below.

    (base) donfry@DONs-Air ~ % mamba create -n climada_env_2 -c conda-forge climada

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString stringByStandardizingPath]: unrecognized selector sent to instance 0x600003714330'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000018c242ccc __exceptionPreprocess + 176
    1   libobjc.A.dylib                     0x000000018bd2a788 objc_exception_throw + 60
    2   CoreFoundation                      0x000000018c2f502c -[NSObject(NSObject) __retain_OA] + 0
    3   CoreFoundation                      0x000000018c1accdc ___forwarding___ + 1580
    4   CoreFoundation                      0x000000018c1ac5f0 _CF_forwarding_prep_0 + 96
    5   Foundation                          0x000000018d2abcd4 -[NSProcessInfo arguments] + 188
    6   CoreFoundation                      0x000000018c2beaac __getDefaultArguments_block_invoke + 96
    7   libdispatch.dylib                   0x000000018bf3e3e8 _dispatch_client_callout + 20
    8   libdispatch.dylib                   0x000000018bf3fc68 _dispatch_once_callout + 32
    9   CoreFoundation                      0x000000018c2be448 _addBackstopValuesForIdentifierAndSource + 652
    10  CoreFoundation                      0x000000018c1783dc __81-[_CFXPreferences(SourceAdditions) withNamedVolatileSourceForIdentifier:perform:]_block_invoke + 144
    11  CoreFoundation                      0x000000018c2be0e4 -[_CFXPreferences withNamedVolatileSourceForIdentifier:perform:] + 272
    12  CoreFoundation                      0x000000018c17e764 -[CFPrefsSearchListSource addNamedVolatileSourceForIdentifier:] + 136
    13  CoreFoundation                      0x000000018c2fd54c __108-[_CFXPreferences(SearchListAdditions) withSearchListForIdentifier:container:cloudConfigurationURL:perform:]_block_invoke.155 + 296
    14  CoreFoundation                      0x000000018c2fd1f4 -[_CFXPreferences withSearchLists:] + 84
    15  CoreFoundation                      0x000000018c179cb4 __108-[_CFXPreferences(SearchListAdditions) withSearchListForIdentifier:container:cloudConfigurationURL:perform:]_block_invoke + 300
    16  CoreFoundation                      0x000000018c2fd3a0 -[_CFXPreferences withSearchListForIdentifier:container:cloudConfigurationURL:perform:] + 384
    17  CoreFoundation                      0x000000018c1795d8 -[_CFXPreferences copyAppValueForKey:identifier:container:configurationURL:] + 156
    18  CoreFoundation                      0x000000018c179500 _CFPreferencesCopyAppValueWithContainerAndConfiguration + 112
    19  SystemConfiguration                 0x000000018cf2a818 SCDynamicStoreCopyProxiesWithOptions + 180
    20  libcurl.4.dylib                     0x0000000103308624 Curl_macos_init + 16
    21  libcurl.4.dylib                     0x00000001032e4ae8 global_init + 172
    22  libcurl.4.dylib                     0x00000001032e4a2c curl_global_init + 68
    23  libmamba.2.0.0.dylib                0x0000000102f6cfac _GLOBAL__sub_I_singletons.cpp + 24
    24  dyld                                0x000000018bd8105c ___ZZNK5dyld46Loader25findAndRunAllInitializersERNS_12RuntimeStateEENK3$_0clEv_block_invoke + 168
    25  dyld                                0x000000018bdbf0d4 ___ZNK5dyld313MachOAnalyzer18forEachInitializerER11DiagnosticsRKNS0_15VMAddrConverterEU13block_pointerFvjEPKv_block_invoke.202 + 172
    26  dyld                                0x000000018bdb299c ___ZNK5dyld39MachOFile14forEachSectionEU13block_pointerFvRKNS0_11SectionInfoEbRbE_block_invoke + 496
    27  dyld                                0x000000018bd622fc _ZNK5dyld39MachOFile18forEachLoadCommandER11DiagnosticsU13block_pointerFvPK12load_commandRbE + 300
    28  dyld                                0x000000018bdb1930 _ZNK5dyld39MachOFile14forEachSectionEU13block_pointerFvRKNS0_11SectionInfoEbRbE + 192
    29  dyld                                0x000000018bdb4208 _ZNK5dyld39MachOFile32forEachInitializerPointerSectionER11DiagnosticsU13block_pointerFvjjRbE + 160
    30  dyld                                0x000000018bdbedc8 _ZNK5dyld313MachOAnalyzer18forEachInitializerER11DiagnosticsRKNS0_15VMAddrConverterEU13block_pointerFvjEPKv + 432
    31  dyld                                0x000000018bd7d070 _ZNK5dyld46Loader25findAndRunAllInitializersERNS_12RuntimeStateE + 524
    32  dyld                                0x000000018bd83614 _ZNK5dyld416JustInTimeLoader15runInitializersERNS_12RuntimeStateE + 36
    33  dyld                                0x000000018bd7d45c _ZNK5dyld46Loader23runInitializersBottomUpERNS_12RuntimeStateERN5dyld35ArrayIPKS0_EE + 220
    34  dyld                                0x000000018bd7d400 _ZNK5dyld46Loader23runInitializersBottomUpERNS_12RuntimeStateERN5dyld35ArrayIPKS0_EE + 128
    35  dyld                                0x000000018bd810ec _ZZNK5dyld46Loader38runInitializersBottomUpPlusUpwardLinksERNS_12RuntimeStateEENK3$_1clEv + 116
    36  dyld                                0x000000018bd7d628 _ZNK5dyld46Loader38runInitializersBottomUpPlusUpwardLinksERNS_12RuntimeStateE + 380
    37  dyld                                0x000000018bda04d8 _ZN5dyld44APIs25runAllInitializersForMainEv + 464
    38  dyld                                0x000000018bd66f7c _ZN5dyld4L7prepareERNS_4APIsEPKN5dyld313MachOAnalyzerE + 3156
    39  dyld                                0x000000018bd65edc start + 1844
)
libc++abi: terminating due to uncaught exception of type NSException

Any idea what is going with either/both errors? And more importantly, what I can do to fix these?


Solution

  • You're trying to install an old package into a new interpreter. Set the controls of the way-back machine to an earlier era. Using the same interpreter that the Climada documentation author used should work smoothly.

    I believe it's python 3.11.8.

    That sounds like a good plan. However the "Pinned packages: - python=3.13" output suggests that your mamba install is trying to use a quite recently released interpreter. Climada released 5.0.0 back in summer, and then interpreter 3.13 was released a few months later.

    Conda is an effective but slow means of dealing with the binary dependencies of complex builds. Mamba was an attempt to do the same thing faster, and then some of its improvements were folded back into conda. Nowadays many people prefer uv (e.g. uv pip install ...) due to its blinding speed and ease of specifying the desired interpreter version.

    You may be able to get away with just doing this:

    which python && python --version
    python -m pip install climada
    

    The first line verifies the activated interpreter is coming from where you think it is, running 3.11 which should be fine. And the second line grabs the package from pypi.


    uv solution

    I found this worked smoothly, under MacOS sequoia 15.1.

    In a fresh project directory, create a three-line requirements.txt file which mentions a pair of related deps:

    Then ensure uv is available, set up a 3.11 interpreter, freeze the dep versions, install deps, and verify a good import.

    which uv || curl -LsSf https://astral.sh/uv/install.sh | sh
    uv venv --python=python3.11
    source .venv/bin/activate && uv pip compile --upgrade --quiet requirements.txt -o requirements.lock
    source .venv/bin/activate && uv pip install -r requirements.lock
    source .venv/bin/activate && python -c 'import climada'
    

    Repeating with interpreter 3.12 also works smoothly.

    Repeating with 3.13 reports "Failed to build llvmlite==0.43.0" ... "Could not find a llvm-config binary.", which is explaining a need to build from source since some binary wheels are not yet available for 3.13.

    Using uv in this way will create .venv/ in the current directory, as we can see from those activate commands. As you experiment with it, discarding with rm -rf and redoing it is safe. You can get it back with that requirements file.

    (I used make to run these commands, so those last three bash invocations did three independent activates.)


    The core difficulty you encountered is you lost track of what python interpreter, and version, you were using. Some of your favorite libraries do not (yet) work with 3.13.

    As a rule of thumb, always activate a project environment before running python, or running a jupyter lab kernel, or installing a library. Avoid putting new libraries under /usr/local, or /usr, or the miniconda base environment, as it will only lead to confusion.