matplotlib / basemap

Plot on map projections (with coastlines and political boundaries) using matplotlib
MIT License
779 stars 392 forks source link

Basemap: solving environment failed #597

Closed timonovart closed 9 months ago

timonovart commented 9 months ago

Hello! I had this problem which I could not solve myself for several days. It seems like some conflict of dependencies — I tried playing with different versions of packages and creating venvs but it did not help and the error is always the same. What am I doing wrong?..


 - defaults
Platform: osx-arm64
Collecting package metadata (repodata.json): done
Solving environment: / warning  libmamba Added empty dependency for problem type SOLVER_RULE_UPDATE
failed

LibMambaUnsatisfiableError: Encountered problems while solving:
  - package basemap-1.2.2-py39hd91d049_1 has constraint proj <6 conflicting with proj-7.2.0-heac154c_1

Could not solve for environment specs
The following packages are incompatible
├─ basemap is installable with the potential options
│  ├─ basemap 1.2.2 would require
│  │  └─ proj [<6 |>=7.2.0,<7.2.1.0a0 ] with the potential options
│  │     ├─ proj 7.2.0, which can be installed;
│  │     └─ proj <6 conflicts with any installable versions previously reported;
│  ├─ basemap [1.2.2|1.3.2|1.3.6|1.4.0] would require
│  │  └─ python >=3.10,<3.11.0a0 , which can be installed;
│  ├─ basemap [1.2.2|1.3.2|1.3.6|1.4.0] would require
│  │  └─ python >=3.8,<3.9.0a0 , which can be installed;
│  ├─ basemap 1.2.2 would require
│  │  └─ proj [ |<6 ] with the potential options
│  │     ├─ proj 7.2.0, which can be installed;
│  │     ├─ proj [6.2.1|8.2.1|9.3.1], which can be installed;
│  │     └─ proj <6 conflicts with any installable versions previously reported;
│  ├─ basemap [1.3.2|1.3.6|1.4.0] would require
│  │  └─ proj <6 , which conflicts with any installable versions previously reported;
│  ├─ basemap [1.3.6|1.4.0] would require
│  │  └─ python >=3.11,<3.12.0a0 , which can be installed;
│  └─ basemap 1.4.0 would require
│     └─ python >=3.12,<3.13.0a0 , which can be installed;
├─ pin-1 is not installable because it requires
│  └─ python 3.9.* , which conflicts with any installable versions previously reported;
└─ proj 7.2.0  is requested and can be installed.

Pins seem to be involved in the conflict. Currently pinned specs:
 - python 3.9.* (labeled as 'pin-1')```
molinav commented 9 months ago

Hi @timonovart! Are you using Anaconda or conda-forge channels? I would avoid installing any basemap older than 1.3.0. In principle, there should be conda packages for Python 3.9 on MacOS ARM64, see e.g.

https://anaconda.org/conda-forge/basemap/1.4.0/download/osx-arm64/basemap-1.4.0-np126py39h95066b0_2.conda https://anaconda.org/conda-forge/basemap/1.3.9/download/osx-arm64/basemap-1.3.9-py39hb118012_0.conda

So what is looking surprising to me is that mamba is not able to find newer basemap packages for Python 3.9 on MacOS ARM64 (which are indeed available), so it needs to go down to basemap 1.2.2 (super old), which brings you conflicts because of the too old PROJ dependency which this old basemap needs.

timonovart commented 9 months ago

Hello @molinav ! Thank you for your response! Actually, this was the most recent output after I've done a lot of 'playing' around. The first one was this, and it mentioned the newest versions of basemap as far as I see. As I am maybe a total newbie, I am not sure what channel am I using and how to check it even... But the command was just 'conda install basemap'.

The first output was:

 - defaults
Platform: osx-arm64
Collecting package metadata (repodata.json): done
Solving environment: / warning  libmamba Added empty dependency for problem type SOLVER_RULE_UPDATE
failed

LibMambaUnsatisfiableError: Encountered problems while solving:
  - package pyproj-3.4.1-py311h0c26271_0 requires proj >=8.2.1,<8.2.2.0a0, but none of the providers can be installed

Could not solve for environment specs
The following packages are incompatible
├─ basemap is installable with the potential options
│  ├─ basemap 1.3.6 would require
│  │  ├─ proj <6 , which can be installed;
│  │  └─ pyproj >=1.9.3,<3.5.0  with the potential options
│  │     ├─ pyproj 3.4.1 would require
│  │     │  └─ proj >=8.2.1,<8.2.2.0a0 , which conflicts with any installable versions previously reported;
│  │     ├─ pyproj [3.1.0|3.3.0|3.4.1|3.6.1] would require
│  │     │  └─ python >=3.10,<3.11.0a0 , which can be installed;
│  │     ├─ pyproj [3.1.0|3.3.0|3.4.1] would require
│  │     │  └─ python >=3.8,<3.9.0a0 , which can be installed;
│  │     └─ pyproj [3.1.0|3.3.0|3.4.1|3.6.1] would require
│  │        └─ python >=3.9,<3.10.0a0 , which can be installed;
│  ├─ basemap [1.2.2|1.3.2|1.3.6|1.4.0] would require
│  │  └─ python >=3.10,<3.11.0a0 , which can be installed;
│  ├─ basemap [1.2.2|1.3.2|1.3.6|1.4.0] would require
│  │  └─ python >=3.8,<3.9.0a0 , which can be installed;
│  ├─ basemap [1.2.2|1.3.2|1.3.6|1.4.0] would require
│  │  └─ python >=3.9,<3.10.0a0 , which can be installed;
│  ├─ basemap 1.4.0 would require
│  │  ├─ proj <6 , which can be installed;
│  │  └─ pyproj >=1.9.3,<3.7.0  with the potential options
│  │     ├─ pyproj 3.4.1, which cannot be installed (as previously explained);
│  │     ├─ pyproj [3.1.0|3.3.0|3.4.1|3.6.1], which can be installed (as previously explained);
│  │     ├─ pyproj [3.1.0|3.3.0|3.4.1], which can be installed (as previously explained);
│  │     ├─ pyproj [3.1.0|3.3.0|3.4.1|3.6.1], which can be installed (as previously explained);
│  │     ├─ pyproj 3.6.1 would require
│  │     │  └─ proj >=9.3.1,<9.3.2.0a0 , which conflicts with any installable versions previously reported;
│  │     └─ pyproj 3.6.1 would require
│  │        └─ python >=3.12,<3.13.0a0 , which can be installed;
│  └─ basemap 1.4.0 would require
│     └─ python >=3.12,<3.13.0a0 , which can be installed;
└─ pin-1 is not installable because it requires
   └─ python 3.11.* , which conflicts with any installable versions previously reported.

Pins seem to be involved in the conflict. Currently pinned specs:
 - python 3.11.* (labeled as 'pin-1')
molinav commented 9 months ago

Does it make any difference if you do conda install -c conda-forge basemap?

timonovart commented 9 months ago

Dear @molinav , somehow 'conda install basemap --channel conda-forge' helped! Thank you!