matplotlib / basemap

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

basemap with mac m2 issues #574

Closed swiftienimbus closed 6 months ago

swiftienimbus commented 1 year ago

Hello I am not an expert in programming so I am kindly asking for some help. I just purchased a new laptop (Macbook pro chip M2 pro). I want to install all the programs and packages I used to work with my old macbook air. So I am trying to install basemap (I already tried to install python 3.5 and is already installed in an environment) but i am still getting this error:

Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-ain2mraz/matplotlib/

Can I get some help? I have no idea how to solve it, i already installed as well cython but still I don't get any success to install basemap. I want to work with this new laptop to finalize a paper and I really need this package!

Thanks in advance

molinav commented 1 year ago

Hi @swiftienimbus! Can you provide the whole traceback that you get when trying to install basemap? With a bit more info I can try to help you see where the problem is coming from.

Note that we do not have basemap wheels for MacOS on PyPI, so the installation is not simply to download the wheel, but your computer needs to build the wheel from source, which can fail due to several reasons (GEOS missing, GEOS not being found, lack of C/C++ compiler, etc.).

Since you are using a brand new computer, I would also recommend that you try to use a newer Python version (3.8+). Python 3.7 will be EOL this June 2023, Python 3.5 has been EOL for almost 3 years.

swiftienimbus commented 1 year ago

Hi @swiftienimbus! Can you provide the whole traceback that you get when trying to install basemap? With a bit more info I can try to help you see where the problem is coming from.

Note that we do not have basemap wheels for MacOS on PyPI, so the installation is not simply to download the wheel, but your computer needs to build the wheel from source, which can fail due to several reasons (GEOS missing, GEOS not being found, lack of C/C++ compiler, etc.).

Since you are using a brand new computer, I would also recommend that you try to use a newer Python version (3.8+). Python 3.7 will be EOL this June 2023, Python 3.5 has been EOL for almost 3 years.

Thank you for your reply so I installed python 3.5 in an environment because I thought maybe this way basemap would be installed with less issues. I tried to use the following:

pip3 install basemap I got this in my terminal: "Defaulting to user installation because normal site-packages is not writeable Collecting basemap Using cached basemap-1.3.7.zip (156 kB) WARNING: Value for prefixed-purelib does not match. Please report this to https://github.com/pypa/pip/issues/10151 distutils: /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/normal/lib/python3.9/site-packages sysconfig: /Library/Python/3.9/site-packages WARNING: Value for prefixed-platlib does not match. Please report this to https://github.com/pypa/pip/issues/10151 distutils: /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/normal/lib/python3.9/site-packages sysconfig: /Library/Python/3.9/site-packages WARNING: Additional context: user = False home = None root = None prefix = '/private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/normal' WARNING: Value for prefixed-purelib does not match. Please report this to https://github.com/pypa/pip/issues/10151 distutils: /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/overlay/lib/python3.9/site-packages sysconfig: /Library/Python/3.9/site-packages WARNING: Value for prefixed-platlib does not match. Please report this to https://github.com/pypa/pip/issues/10151 distutils: /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/overlay/lib/python3.9/site-packages sysconfig: /Library/Python/3.9/site-packages WARNING: Additional context: user = False home = None root = None prefix = '/private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/overlay' Installing build dependencies ... done Getting requirements to build wheel ... done Preparing wheel metadata ... done Collecting matplotlib<3.8,>=1.5 Using cached matplotlib-3.7.1-cp39-cp39-macosx_11_0_arm64.whl (7.3 MB) Collecting basemap-data<1.4,>=1.3.2 Using cached basemap_data-1.3.2-py2.py3-none-any.whl (30.5 MB) Collecting pyproj<3.6.0,>=1.9.3 Using cached pyproj-3.5.0-cp39-cp39-macosx_11_0_arm64.whl (5.7 MB) Collecting numpy<1.25,>=1.22 Using cached numpy-1.24.3-cp39-cp39-macosx_11_0_arm64.whl (13.9 MB) Collecting pyshp<2.4,>=1.2 Using cached pyshp-2.3.1-py2.py3-none-any.whl (46 kB) Collecting packaging>=20.0 Using cached packaging-23.1-py3-none-any.whl (48 kB) Collecting python-dateutil>=2.7 Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) Collecting contourpy>=1.0.1 Using cached contourpy-1.0.7-cp39-cp39-macosx_11_0_arm64.whl (229 kB) Collecting cycler>=0.10 Using cached cycler-0.11.0-py3-none-any.whl (6.4 kB) Collecting fonttools>=4.22.0 Using cached fonttools-4.39.4-py3-none-any.whl (1.0 MB) Collecting pillow>=6.2.0 Using cached Pillow-9.5.0-cp39-cp39-macosx_11_0_arm64.whl (3.1 MB) Collecting pyparsing>=2.3.1 Using cached pyparsing-3.0.9-py3-none-any.whl (98 kB) Collecting importlib-resources>=3.2.0 Using cached importlib_resources-5.12.0-py3-none-any.whl (36 kB) Collecting kiwisolver>=1.0.1 Using cached kiwisolver-1.4.4-cp39-cp39-macosx_11_0_arm64.whl (63 kB) Collecting zipp>=3.1.0 Using cached zipp-3.15.0-py3-none-any.whl (6.8 kB) Collecting certifi Using cached certifi-2023.5.7-py3-none-any.whl (156 kB) Requirement already satisfied: six>=1.5 in /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib<3.8,>=1.5->basemap) (1.15.0) Building wheels for collected packages: basemap Building wheel for basemap (PEP 517) ... error

ERROR: Command errored out with exit status 1: command: /Library/Developer/CommandLineTools/usr/bin/python3 /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/tmpj_f3u4q1 cwd: /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-install-th9cijlq/basemap_635cfaa5d28d4a8b90320b570fa282d8 Complete output (32 lines): setup.py:58: RuntimeWarning: Cannot find GEOS library and/or headers in standard locations ('/Users/chateau/local', '/Users/chateau', '/usr/local', '/usr', '/opt/local', '/opt', '/sw'). Please install the corresponding packages using your software management system or set the environment variable GEOS_DIR to point to the location where GEOS is installed (for example, if 'geos_c.h' is in '/usr/local/include' and 'libgeos_c' is in '/usr/local/lib', then you need to set GEOS_DIR to '/usr/local' warnings.warn(" ".join([ running bdist_wheel running build running build_py creating build creating build/lib.macosx-10.9-universal2-3.9 creating build/lib.macosx-10.9-universal2-3.9/mpl_toolkits copying src/mpl_toolkits/init.py -> build/lib.macosx-10.9-universal2-3.9/mpl_toolkits creating build/lib.macosx-10.9-universal2-3.9/mpl_toolkits/basemap copying src/mpl_toolkits/basemap/cm.py -> build/lib.macosx-10.9-universal2-3.9/mpl_toolkits/basemap copying src/mpl_toolkits/basemap/init.py -> build/lib.macosx-10.9-universal2-3.9/mpl_toolkits/basemap copying src/mpl_toolkits/basemap/test.py -> build/lib.macosx-10.9-universal2-3.9/mpl_toolkits/basemap copying src/mpl_toolkits/basemap/diagnostic.py -> build/lib.macosx-10.9-universal2-3.9/mpl_toolkits/basemap copying src/mpl_toolkits/basemap/proj.py -> build/lib.macosx-10.9-universal2-3.9/mpl_toolkits/basemap copying src/mpl_toolkits/basemap/solar.py -> build/lib.macosx-10.9-universal2-3.9/mpl_toolkits/basemap running build_ext creating build/temp.macosx-10.9-universal2-3.9 creating build/temp.macosx-10.9-universal2-3.9/src clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -iwithsysroot/System/Library/Frameworks/System.framework/PrivateHeaders -iwithsysroot/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/Headers -arch arm64 -arch x86_64 -Werror=implicit-function-declaration -Wno-error=unreachable-code -I/private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/overlay/lib/python3.9/site-packages/numpy/core/include -I/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/include/python3.9 -c src/_geoslib.c -o build/temp.macosx-10.9-universal2-3.9/src/_geoslib.o In file included from src/_geoslib.c:744: In file included from /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/overlay/lib/python3.9/site-packages/numpy/core/include/numpy/arrayobject.h:4: In file included from /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/overlay/lib/python3.9/site-packages/numpy/core/include/numpy/ndarrayobject.h:12: In file included from /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/overlay/lib/python3.9/site-packages/numpy/core/include/numpy/ndarraytypes.h:1969: /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-env-yqy7hxyn/overlay/lib/python3.9/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-W#warnings]

warning "Using deprecated NumPy API, disable it with " \

^ src/_geoslib.c:745:10: fatal error: 'geos_c.h' file not found

include "geos_c.h"

       ^~~~~~~~~~

1 warning and 1 error generated. error: command '/usr/bin/clang' failed with exit code 1

ERROR: Failed building wheel for basemap Failed to build basemap ERROR: Could not build wheels for basemap which use PEP 517 and cannot be installed directly WARNING: You are using pip version 21.2.4; however, version 23.1.2 is available. You should consider upgrading via the '/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip' command."

Should I install geos? or something else? I am using M2 pro chip. I was trying to install the python version I wanted for this environment with pyenv but now when I type

python --version I get this : pyenv: python: command not found

The `python' command exists in these Python versions: 3.5.10

Note: See 'pyenv help global' for tips on allowing both python2 and python3 to be found.

Sorry for the inconvenience! your help is appreciated! Now I tried to set to local the python version but I am not sure whether I have to do this everytime I open the environment?

molinav commented 1 year ago

From your traceback, the issue is coming from the missing GEOS library. In the precompiled wheels, a copy of GEOS is bundled for basemap use. In your case, since there are no wheels for MacOS, you need to build from the source distribution, and GEOS needs to be present somewhere in your system so that pip can try to build the _geoslib extension.

GEOS should be easily installable on MacOS, e.g. through Homebrew. Once you have it, you will need to find out its root installation folder, and define the GEOS_DIR environment variable with this folder path before calling pip to install basemap.

swiftienimbus commented 1 year ago

From your traceback, the issue is coming from the missing GEOS library. In the precompiled wheels, a copy of GEOS is bundled for basemap use. In your case, since there are no wheels for MacOS, you need to build from the source distribution, and GEOS needs to be present somewhere in your system so that pip can try to build the _geoslib extension.

GEOS should be easily installable on MacOS, e.g. through Homebrew. Once you have it, you will need to find out its root installation folder, and define the GEOS_DIR environment variable with this folder path before calling pip to install basemap.

I already followed your instructions and these ones: https://github.com/matplotlib/basemap/issues/539

I installed as well freetype and other packages but I am still gettint this error:

distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('numpy>=1.10.0')

Edit setup.cfg to change the build options

BUILDING MATPLOTLIB
            matplotlib: yes [3.0.3]
                python: yes [3.5.10 (default, May 14 2023, 23:52:54)  [GCC
                        Apple LLVM 14.0.3 (clang-1403.0.22.14.1)]]
              platform: yes [darwin]

REQUIRED DEPENDENCIES AND EXTENSIONS
                 numpy: yes [not found. pip may install it below.]
      install_requires: yes [handled by setuptools]
                libagg: yes [pkg-config information for 'libagg' could not
                        be found. Using local copy.]
              freetype: yes [version 2.13.0]
                   png: yes [version 1.6.39]
                 qhull: yes [pkg-config information for 'libqhull' could not
                        be found. Using local copy.]

OPTIONAL SUBPACKAGES
           sample_data: yes [installing]
              toolkits: yes [installing]
                 tests: no  [skipping due to configuration]
        toolkits_tests: no  [skipping due to configuration]

OPTIONAL BACKEND EXTENSIONS
                   agg: yes [installing]
                 tkagg: yes [installing; run-time loading from Python Tcl /
                        Tk]
                macosx: yes [installing, darwin]
             windowing: no  [Microsoft Windows only]

OPTIONAL PACKAGE DATA
                  dlls: no  [skipping due to configuration]

----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/gm/t4q3k1t913b67p1g_j4gp840000gn/T/pip-build-a38hjr4/matplotlib/ You are using pip version 9.0.1, however version 23.1.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command.

Should I change another file? or is it because the python version is not compatible ? Can I kindly ask for your help since I am not that expert in changing configurations in files :( sorry and thanks for the quick reply!

molinav commented 1 year ago

The problem that you are getting here is different and caused by your Python 3.5 installation. In your last message, you are using Python 3.5 and not Python 3.9 (from your traceback). The support for Python 3.5 in matplotlib was dropped long ago (3.1 if I remember correctly), and at the time there were no wheel builds for the new Apple ARM chips. Because of that is why you are needing to install all the matplotlib build dependencies when trying to install basemap, since matplotlib also needs to be built from source for this old Python version.

I would recommend that you recheck your environment and ensure that you are using Python 3.9 as in your previous message that had the GEOS_DIR error message. Once you are sure that this is correct, I would recommend that you try with the GEOS installation through Homebrew or similar, and then the setup of the GEOS_DIR environment variable to the appropriate folder path.

swiftienimbus commented 1 year ago

Yes thanks, I already did those steps, I checked the version in my current environment and is Python 3.5.10

Do you suggest changing to the python 3.9 version? I am still getting this error (I attach the screenshots)

Screenshot 2023-05-15 at 16 09 41 Screenshot 2023-05-15 at 16 09 03

I am tryint to track that file that shows the error to maybe modify it but I can't find it, maybe I'll create a new environment with a higher python version but just want to make sure is because of the python version.

The complete message is here:

I ran: python -m pip install .

Processing /Users/chateau/basemap/packages/basemap Ignoring numpy: markers 'python_version == "2.6"' don't match your environment Ignoring numpy: markers 'python_version == "2.7"' don't match your environment Ignoring numpy: markers 'python_version == "3.3"' don't match your environment Ignoring numpy: markers 'python_version == "3.4"' don't match your environment Ignoring numpy: markers 'python_version == "3.6"' don't match your environment Ignoring numpy: markers 'python_version == "3.7"' don't match your environment Ignoring numpy: markers 'python_version >= "3.8"' don't match your environment Ignoring pyparsing: markers 'python_version == "2.6"' don't match your environment Ignoring matplotlib: markers 'python_version == "2.6"' don't match your environment Ignoring matplotlib: markers 'python_version == "2.7"' don't match your environment Ignoring matplotlib: markers 'python_version == "3.3"' don't match your environment Ignoring matplotlib: markers 'python_version == "3.4"' don't match your environment Ignoring pyproj: markers 'python_version == "2.6"' don't match your environment Ignoring pyproj: markers 'python_version == "2.7"' don't match your environment Ignoring pyproj: markers 'python_version == "3.3"' don't match your environment Ignoring pyproj: markers 'python_version == "3.4"' don't match your environment Ignoring pyshp: markers 'python_version == "2.6"' don't match your environment Collecting basemap_data<1.4,>=1.3.2 (from basemap==1.3.7+dev) Using cached https://files.pythonhosted.org/packages/2c/c3/63fdb885308c999206c7a497d79a50891581626da7dc491d432d2732bb46/basemap_data-1.3.2-py2.py3-none-any.whl Collecting numpy<1.19,>=1.16; python_version == "3.5" (from basemap==1.3.7+dev) Using cached https://files.pythonhosted.org/packages/01/1b/d3ddcabd5817be02df0e6ee20d64f77ff6d0d97f83b77f65e98c8a651981/numpy-1.18.5.zip Collecting matplotlib<3.8,>=1.5; python_version >= "3.5" (from basemap==1.3.7+dev) Using cached https://files.pythonhosted.org/packages/26/04/8b381d5b166508cc258632b225adbafec49bbe69aa9a4fa1f1b461428313/matplotlib-3.0.3.tar.gz Complete output from command python setup.py egg_info: Couldn't find index page for 'numpy' (maybe misspelled?) No local packages or working download links found for numpy>=1.10.0 Traceback (most recent call last): File "", line 1, in File "/private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-5r6kd3th/matplotlib/setup.py", line 297, in cmdclass=cmdclass, File "/Users/chateau/.pyenv/versions/3.5.10/lib/python3.5/distutils/core.py", line 108, in setup _setup_distribution = dist = klass(attrs) File "/Users/chateau/.pyenv/versions/3.5.10/lib/python3.5/site-packages/setuptools/dist.py", line 315, in init self.fetch_build_eggs(attrs['setup_requires']) File "/Users/chateau/.pyenv/versions/3.5.10/lib/python3.5/site-packages/setuptools/dist.py", line 361, in fetch_build_eggs replace_conflicting=True, File "/Users/chateau/.pyenv/versions/3.5.10/lib/python3.5/site-packages/pkg_resources/init.py", line 850, in resolve dist = best[req.key] = env.best_match(req, ws, installer) File "/Users/chateau/.pyenv/versions/3.5.10/lib/python3.5/site-packages/pkg_resources/init.py", line 1122, in best_match return self.obtain(req, installer) File "/Users/chateau/.pyenv/versions/3.5.10/lib/python3.5/site-packages/pkg_resources/init.py", line 1134, in obtain return installer(requirement) File "/Users/chateau/.pyenv/versions/3.5.10/lib/python3.5/site-packages/setuptools/dist.py", line 429, in fetch_build_egg return cmd.easy_install(req) File "/Users/chateau/.pyenv/versions/3.5.10/lib/python3.5/site-packages/setuptools/command/easy_install.py", line 659, in easy_install raise DistutilsError(msg) distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('numpy>=1.10.0')

Edit setup.cfg to change the build options

BUILDING MATPLOTLIB
            matplotlib: yes [3.0.3]
                python: yes [3.5.10 (default, May 14 2023, 23:52:54)  [GCC
                        Apple LLVM 14.0.3 (clang-1403.0.22.14.1)]]
              platform: yes [darwin]

REQUIRED DEPENDENCIES AND EXTENSIONS
                 numpy: yes [not found. pip may install it below.]
      install_requires: yes [handled by setuptools]
                libagg: yes [pkg-config information for 'libagg' could not
                        be found. Using local copy.]
              freetype: yes [version 2.13.0]
                   png: yes [version 1.6.39]
                 qhull: yes [pkg-config information for 'libqhull' could not
                        be found. Using local copy.]

OPTIONAL SUBPACKAGES
           sample_data: yes [installing]
              toolkits: yes [installing]
                 tests: no  [skipping due to configuration]
        toolkits_tests: no  [skipping due to configuration]

OPTIONAL BACKEND EXTENSIONS
                   agg: yes [installing]
                 tkagg: yes [installing; run-time loading from Python Tcl /
                        Tk]
                macosx: yes [installing, darwin]
             windowing: no  [Microsoft Windows only]

OPTIONAL PACKAGE DATA
                  dlls: no  [skipping due to configuration]

----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/gm/t4q3k1t913b67p1g_j4_gp840000gn/T/pip-build-5r6kd3th/matplotlib/ You are using pip version 9.0.1, however version 23.1.2 is available. You should consider upgrading via the 'pip install --upgrade pip' command.

molinav commented 1 year ago

Unless you have a real reason to use Python 3.5, better switch to at least Python 3.9. Otherwise you will have to face these problems not only with basemap but almost with any package, since you will not find MacOS ARM64 wheel packages for any dependency and your system will need to build everything always from source.

Once you have switched to at least Python 3.9, you can try again what you already tried for Python 3.5 and, if the problem persists, feel free to copy the traceback here and I will try to help you.

swiftienimbus commented 1 year ago

Hello thank you so much for your help!

I actually tried to solve that installing a new version of python (i am using pyenv, but i am not very familiar with this, and is giving me problems when I start a new shell window). I tried to install python 3.9 in the nimbus environment and at the end everything was successful until when I want to import basemap via spyder or jupyter notebook, it's giving me this error:

Screenshot 2023-05-16 at 21 47 19 Screenshot 2023-05-16 at 21 09 11

I am not sure if is related to something to the basemap path's that spyder and jupyter notebook can't recognize is already installed, because when I run the program in terminal via:

python scriptfile.py I don't get errors while importing basemap, (but still i am having errors in other parts which would be more easy to see if I could visualize and import everything correctly in spyder) should I do something else? do you recommend installing python versions with pyenv? or how can i solve this issue related to importing the package in spyder? Thanks again in advance!

molinav commented 1 year ago

Hi @swiftienimbus! For the problem with Spyder and Jupyter notebooks I cannot provide much help because I do not use them regularly. Normally I play around directly using IPython in my console or by running scripts without interaction.

From what you describe, since your scriptfile.py can import basemap without error, I would assume that you installed basemap successfully "somewhere", but it might be that Spyder and Jupyter are installed in a different Python environment where you do not have basemap installed.

Using pyenv is perfectly normal on MacOs and GNU/Linux, I think it is an usual way to have Python installations. Also on Windows I use pyenv-win, which mimics the behaviour of pyenv but on Windows.

jklymak commented 1 year ago

Unless you really know what you are doing, strongly recommend you install Python and Python packages with mamba/conda. You are mixing up versions - basemap has not been an mpl_toolkit for over 10 years. Mamba/conda are not perfect but they take most of the pain out of doing this sort of thing away, particularly for a package like basemap that depends on external C or FORTRAN libraries.

swiftienimbus commented 1 year ago

Hello again @molinav Yes actually appareantly it was installed within the pyenv folder, but i am not sure why, when I try to install it without opening an environrenmet with pyenv, it does not allow me. I attach a screenshot of what I get after typyin pip install basemap:

Screenshot 2023-05-16 at 22 49 35

Is there a way to call the basemap installation or folders somehow to the python environment I created with conda ? sorry for my (maybe) obvious questions, i am a bit new on this stuff

swiftienimbus commented 1 year ago

hello @jklymak I tried to do that with conda actually, but i got errors since i think those libraries are depracted since years ago, that's why I tried with pyenv but somehow this is giving me more issues :/, I tried to create a new environment with conda with python 3.9 but I got the same message when I try to install basemap, that can't find packages compatible:

Screenshot 2023-05-16 at 22 55 23

and then when i try to do it with pip install, somehow pyenv complains about it :/

jklymak commented 1 year ago

Sorry I guess I should have checked before posting. If I do:

 mamba create -n test basemap

I indeed get:

Encountered problems while solving:
 - package basemap-1.3.6-py311hf94de1b_1 requires basemap-data >=1.3.6,<2.0a0, but none of the providers can be installed

It looks like the recipe is not working on condo-forge.

molinav commented 1 year ago

For basemap, using conda or pyenv is a bit the same situation, because conda-forge does not have a basemap recipe for MacOS ARM64, and PyPI does not have MacOS ARM64 wheels, so in any case you need to build from source.

From your last tracebacks, your system seems to be quite messed up (your mamba/conda installation should also provide python and pip, but later pip is provided to you by the pyenv shims). I would suggest that you clean your system and either use conda or pyenv, but not both together.

molinav commented 1 year ago

@jklymak This is true, conda-forge still does not provide MacOS ARM64 packages (I tried to update the recipe but failed). For the PyPI wheels I simply did not have time to prepare the GitHub Actions.

Still, as long as @swiftienimbus has GEOS and a C compiler, it should be possible to install basemap from the sdist, either with:

python -m pip install basemap

in case that @swiftienimbus is using a system Python or pyenv Python, or with

python -m pip install --no-deps basemap

if using a conda installation, to avoid mixing pip and conda installations as much as possible. Still this would require that @swiftienimbus ensures the presence of the basemap requirements but installing them manually with conda install.

molinav commented 1 year ago

Sorry I guess I should have checked before posting. If I do:

 mamba create -n test basemap

I indeed get:

Encountered problems while solving:
 - package basemap-1.3.6-py311hf94de1b_1 requires basemap-data >=1.3.6,<2.0a0, but none of the providers can be installed

It looks like the recipe is not working on condo-forge.

This is indeed unexpected behaviour, basemap 1.3.6 should depend on basemap-data >=1.3.2,<1.4, so maybe I have translated something incorrectly from the upstream basemap into the meta.yaml recipe file.

jklymak commented 1 year ago

Yes, I got it to work with:

mamba create -n test 
mamba activate test
mamba install matplotlib pyproj proj geos numpy
python -m pip install basemap

I think that doesn't require a working compiler, but I could be mistaken.

molinav commented 1 year ago

@jklymak The python -m pip install basemap will need a working C compiler in this specific situation because pip will not find MacOS ARM64 wheels, so it will pick the sdist and then it will try to compile the _geoslib.pyx wrapper extension. For Windows, GNU/Linux and MacOS x64 the C compiler is not needed, but for these architectures there is already conda packages for basemap anyway.

molinav commented 1 year ago

@jklymak On my Windows x64, basemap (1.3.7) and its dependency basemap-data (1.3.2) are resolved correctly for Python 3.11 (though I am using conda instead of mamba):

(base) C:\Users\vic>conda create -n test python=3.11 basemap
Collecting package metadata (current_repodata.json): done
Solving environment: done

==> WARNING: A newer version of conda exists. <==
  current version: 23.1.0
  latest version: 23.3.1

Please update conda by running

    $ conda update -n base -c conda-forge conda

Or to minimize the number of packages updated during conda update use

     conda install conda=23.3.1

## Package Plan ##

  environment location: C:\Users\vic\.conda\envs\test

  added / updated specs:
    - basemap
    - python=3.11

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    basemap-1.3.7              |  py311h4cd37dd_0         280 KB  conda-forge
    basemap-data-1.3.2         |     pyhd8ed1ab_3        24.1 MB  conda-forge
    brotli-1.0.9               |       hcfcfb64_8          19 KB  conda-forge
    brotli-bin-1.0.9           |       hcfcfb64_8          22 KB  conda-forge
    bzip2-1.0.8                |       h8ffe710_4         149 KB  conda-forge
    ca-certificates-2023.5.7   |       h56e8100_0         145 KB  conda-forge
    certifi-2023.5.7           |     pyhd8ed1ab_0         149 KB  conda-forge
    contourpy-1.0.7            |  py311h005e61a_0         167 KB  conda-forge
    cycler-0.11.0              |     pyhd8ed1ab_0          10 KB  conda-forge
    fonttools-4.39.4           |  py311ha68e1ae_0         2.2 MB  conda-forge
    freetype-2.12.1            |       h546665d_1         486 KB  conda-forge
    geos-3.11.2                |       h1537add_0         1.3 MB  conda-forge
    intel-openmp-2023.1.0      |   h57928b3_46319         2.5 MB  conda-forge
    kiwisolver-1.4.4           |  py311h005e61a_1          58 KB  conda-forge
    krb5-1.20.1                |       heb0366b_0         701 KB  conda-forge
    lcms2-2.15                 |       h3e3b177_1         487 KB  conda-forge
    lerc-4.0.0                 |       h63175ca_0         190 KB  conda-forge
    libblas-3.9.0              |     16_win64_mkl         5.6 MB  conda-forge
    libbrotlicommon-1.0.9      |       hcfcfb64_8          67 KB  conda-forge
    libbrotlidec-1.0.9         |       hcfcfb64_8          34 KB  conda-forge
    libbrotlienc-1.0.9         |       hcfcfb64_8         724 KB  conda-forge
    libcblas-3.9.0             |     16_win64_mkl         5.6 MB  conda-forge
    libcurl-8.0.1              |       h68f0423_0         304 KB  conda-forge
    libdeflate-1.18            |       hcfcfb64_0         149 KB  conda-forge
    libexpat-2.5.0             |       h63175ca_1         135 KB  conda-forge
    libffi-3.4.2               |       h8ffe710_5          41 KB  conda-forge
    libhwloc-2.9.1             |       h51c2c0f_0         2.4 MB  conda-forge
    libiconv-1.17              |       h8ffe710_0         698 KB  conda-forge
    libjpeg-turbo-2.1.5.1      |       hcfcfb64_0         672 KB  conda-forge
    liblapack-3.9.0            |     16_win64_mkl         5.6 MB  conda-forge
    libpng-1.6.39              |       h19919ed_0         336 KB  conda-forge
    libsqlite-3.42.0           |       hcfcfb64_0         820 KB  conda-forge
    libssh2-1.10.0             |       h9a1e1f7_3         228 KB  conda-forge
    libtiff-4.5.0              |       h6c8260b_6         1.0 MB  conda-forge
    libwebp-base-1.3.0         |       hcfcfb64_0         262 KB  conda-forge
    libxcb-1.13                |    hcd874cb_1004         1.3 MB  conda-forge
    libxml2-2.10.4             |       hc3477c8_0         1.7 MB  conda-forge
    libzlib-1.2.13             |       hcfcfb64_4          70 KB  conda-forge
    m2w64-gcc-libgfortran-5.3.0|                6         342 KB  conda-forge
    m2w64-gcc-libs-5.3.0       |                7         520 KB  conda-forge
    m2w64-gcc-libs-core-5.3.0  |                7         214 KB  conda-forge
    m2w64-gmp-6.1.0            |                2         726 KB  conda-forge
    m2w64-libwinpthread-git-5.0.0.4634.697f757|                2          31 KB  conda-forge
    matplotlib-base-3.7.1      |  py311h6e989c2_0         7.3 MB  conda-forge
    mkl-2022.1.0               |     h6a75c08_874       182.7 MB  conda-forge
    msys2-conda-epoch-20160418 |                1           3 KB  conda-forge
    munkres-1.1.4              |     pyh9f0ad1d_0          12 KB  conda-forge
    numpy-1.24.3               |  py311h0b4df5a_0         6.7 MB  conda-forge
    openjpeg-2.5.0             |       ha2aaf27_2         232 KB  conda-forge
    openssl-3.1.0              |       hcfcfb64_3         7.1 MB  conda-forge
    packaging-23.1             |     pyhd8ed1ab_0          45 KB  conda-forge
    pillow-9.5.0               |  py311hc67b2de_0        44.9 MB  conda-forge
    pip-23.1.2                 |     pyhd8ed1ab_0         1.3 MB  conda-forge
    proj-9.2.0                 |       heca977f_0         2.5 MB  conda-forge
    pthread-stubs-0.4          |    hcd874cb_1001           6 KB  conda-forge
    pthreads-win32-2.9.1       |       hfa6e2cd_3         141 KB  conda-forge
    pyparsing-3.0.9            |     pyhd8ed1ab_0          79 KB  conda-forge
    pyproj-3.5.0               |  py311h095e9de_1         396 KB  conda-forge
    pyshp-2.3.1                |     pyhd8ed1ab_0         941 KB  conda-forge
    python-3.11.3              |h2628c8c_0_cpython        17.3 MB  conda-forge
    python-dateutil-2.8.2      |     pyhd8ed1ab_0         240 KB  conda-forge
    python_abi-3.11            |          3_cp311           6 KB  conda-forge
    setuptools-67.7.2          |     pyhd8ed1ab_0         569 KB  conda-forge
    six-1.16.0                 |     pyh6c4a22f_0          14 KB  conda-forge
    sqlite-3.42.0              |       hcfcfb64_0         821 KB  conda-forge
    tbb-2021.9.0               |       h91493d7_0         151 KB  conda-forge
    tk-8.6.12                  |       h8ffe710_0         3.5 MB  conda-forge
    tzdata-2023c               |       h71feb2d_0         115 KB  conda-forge
    ucrt-10.0.22621.0          |       h57928b3_0         1.2 MB  conda-forge
    vc-14.3                    |      hb25d44b_16          16 KB  conda-forge
    vc14_runtime-14.34.31931   |      h5081d32_16         709 KB  conda-forge
    vs2015_runtime-14.34.31931 |      hed1258a_16          16 KB  conda-forge
    wheel-0.40.0               |     pyhd8ed1ab_0          54 KB  conda-forge
    xorg-libxau-1.0.9          |       hcd874cb_0          57 KB  conda-forge
    xorg-libxdmcp-1.1.3        |       hcd874cb_0          66 KB  conda-forge
    xz-5.2.6                   |       h8d14728_0         213 KB  conda-forge
    zstd-1.5.2                 |       h12be248_6         282 KB  conda-forge
    ------------------------------------------------------------
                                           Total:       341.9 MB

The following NEW packages will be INSTALLED:

  basemap            conda-forge/win-64::basemap-1.3.7-py311h4cd37dd_0
  basemap-data       conda-forge/noarch::basemap-data-1.3.2-pyhd8ed1ab_3
  brotli             conda-forge/win-64::brotli-1.0.9-hcfcfb64_8
  brotli-bin         conda-forge/win-64::brotli-bin-1.0.9-hcfcfb64_8
  bzip2              conda-forge/win-64::bzip2-1.0.8-h8ffe710_4
  ca-certificates    conda-forge/win-64::ca-certificates-2023.5.7-h56e8100_0
  certifi            conda-forge/noarch::certifi-2023.5.7-pyhd8ed1ab_0
  contourpy          conda-forge/win-64::contourpy-1.0.7-py311h005e61a_0
  cycler             conda-forge/noarch::cycler-0.11.0-pyhd8ed1ab_0
  fonttools          conda-forge/win-64::fonttools-4.39.4-py311ha68e1ae_0
  freetype           conda-forge/win-64::freetype-2.12.1-h546665d_1
  geos               conda-forge/win-64::geos-3.11.2-h1537add_0
  intel-openmp       conda-forge/win-64::intel-openmp-2023.1.0-h57928b3_46319
  kiwisolver         conda-forge/win-64::kiwisolver-1.4.4-py311h005e61a_1
  krb5               conda-forge/win-64::krb5-1.20.1-heb0366b_0
  lcms2              conda-forge/win-64::lcms2-2.15-h3e3b177_1
  lerc               conda-forge/win-64::lerc-4.0.0-h63175ca_0
  libblas            conda-forge/win-64::libblas-3.9.0-16_win64_mkl
  libbrotlicommon    conda-forge/win-64::libbrotlicommon-1.0.9-hcfcfb64_8
  libbrotlidec       conda-forge/win-64::libbrotlidec-1.0.9-hcfcfb64_8
  libbrotlienc       conda-forge/win-64::libbrotlienc-1.0.9-hcfcfb64_8
  libcblas           conda-forge/win-64::libcblas-3.9.0-16_win64_mkl
  libcurl            conda-forge/win-64::libcurl-8.0.1-h68f0423_0
  libdeflate         conda-forge/win-64::libdeflate-1.18-hcfcfb64_0
  libexpat           conda-forge/win-64::libexpat-2.5.0-h63175ca_1
  libffi             conda-forge/win-64::libffi-3.4.2-h8ffe710_5
  libhwloc           conda-forge/win-64::libhwloc-2.9.1-h51c2c0f_0
  libiconv           conda-forge/win-64::libiconv-1.17-h8ffe710_0
  libjpeg-turbo      conda-forge/win-64::libjpeg-turbo-2.1.5.1-hcfcfb64_0
  liblapack          conda-forge/win-64::liblapack-3.9.0-16_win64_mkl
  libpng             conda-forge/win-64::libpng-1.6.39-h19919ed_0
  libsqlite          conda-forge/win-64::libsqlite-3.42.0-hcfcfb64_0
  libssh2            conda-forge/win-64::libssh2-1.10.0-h9a1e1f7_3
  libtiff            conda-forge/win-64::libtiff-4.5.0-h6c8260b_6
  libwebp-base       conda-forge/win-64::libwebp-base-1.3.0-hcfcfb64_0
  libxcb             conda-forge/win-64::libxcb-1.13-hcd874cb_1004
  libxml2            conda-forge/win-64::libxml2-2.10.4-hc3477c8_0
  libzlib            conda-forge/win-64::libzlib-1.2.13-hcfcfb64_4
  m2w64-gcc-libgfor~ conda-forge/win-64::m2w64-gcc-libgfortran-5.3.0-6
  m2w64-gcc-libs     conda-forge/win-64::m2w64-gcc-libs-5.3.0-7
  m2w64-gcc-libs-co~ conda-forge/win-64::m2w64-gcc-libs-core-5.3.0-7
  m2w64-gmp          conda-forge/win-64::m2w64-gmp-6.1.0-2
  m2w64-libwinpthre~ conda-forge/win-64::m2w64-libwinpthread-git-5.0.0.4634.697f757-2
  matplotlib-base    conda-forge/win-64::matplotlib-base-3.7.1-py311h6e989c2_0
  mkl                conda-forge/win-64::mkl-2022.1.0-h6a75c08_874
  msys2-conda-epoch  conda-forge/win-64::msys2-conda-epoch-20160418-1
  munkres            conda-forge/noarch::munkres-1.1.4-pyh9f0ad1d_0
  numpy              conda-forge/win-64::numpy-1.24.3-py311h0b4df5a_0
  openjpeg           conda-forge/win-64::openjpeg-2.5.0-ha2aaf27_2
  openssl            conda-forge/win-64::openssl-3.1.0-hcfcfb64_3
  packaging          conda-forge/noarch::packaging-23.1-pyhd8ed1ab_0
  pillow             conda-forge/win-64::pillow-9.5.0-py311hc67b2de_0
  pip                conda-forge/noarch::pip-23.1.2-pyhd8ed1ab_0
  proj               conda-forge/win-64::proj-9.2.0-heca977f_0
  pthread-stubs      conda-forge/win-64::pthread-stubs-0.4-hcd874cb_1001
  pthreads-win32     conda-forge/win-64::pthreads-win32-2.9.1-hfa6e2cd_3
  pyparsing          conda-forge/noarch::pyparsing-3.0.9-pyhd8ed1ab_0
  pyproj             conda-forge/win-64::pyproj-3.5.0-py311h095e9de_1
  pyshp              conda-forge/noarch::pyshp-2.3.1-pyhd8ed1ab_0
  python             conda-forge/win-64::python-3.11.3-h2628c8c_0_cpython
  python-dateutil    conda-forge/noarch::python-dateutil-2.8.2-pyhd8ed1ab_0
  python_abi         conda-forge/win-64::python_abi-3.11-3_cp311
  setuptools         conda-forge/noarch::setuptools-67.7.2-pyhd8ed1ab_0
  six                conda-forge/noarch::six-1.16.0-pyh6c4a22f_0
  sqlite             conda-forge/win-64::sqlite-3.42.0-hcfcfb64_0
  tbb                conda-forge/win-64::tbb-2021.9.0-h91493d7_0
  tk                 conda-forge/win-64::tk-8.6.12-h8ffe710_0
  tzdata             conda-forge/noarch::tzdata-2023c-h71feb2d_0
  ucrt               conda-forge/win-64::ucrt-10.0.22621.0-h57928b3_0
  vc                 conda-forge/win-64::vc-14.3-hb25d44b_16
  vc14_runtime       conda-forge/win-64::vc14_runtime-14.34.31931-h5081d32_16
  vs2015_runtime     conda-forge/win-64::vs2015_runtime-14.34.31931-hed1258a_16
  wheel              conda-forge/noarch::wheel-0.40.0-pyhd8ed1ab_0
  xorg-libxau        conda-forge/win-64::xorg-libxau-1.0.9-hcd874cb_0
  xorg-libxdmcp      conda-forge/win-64::xorg-libxdmcp-1.1.3-hcd874cb_0
  xz                 conda-forge/win-64::xz-5.2.6-h8d14728_0
  zstd               conda-forge/win-64::zstd-1.5.2-h12be248_6

Proceed ([y]/n)? y
jklymak commented 1 year ago

The python -m pip install basemap will need a working C compiler in this specific situation because pip will not find MacOS ARM64 wheels,

OK I have a c compiler, though I'm not sure at which step the c compiler was called ;-)

swiftienimbus commented 1 year ago

@molinav so I tried to do this to just work with conda: python -m pip install --no-deps basemap and almost everything works fine, but when I try to see if its working as is in your tutorial page i get this:

Screenshot 2023-05-16 at 23 50 50

I tried to track what is missing in the init.py but i am not sure if i should modify this or not and I couldn't find the path to the mpl_toolkits , its a bit late here so maybe I am missing something ?:( thanks again !

jklymak commented 1 year ago

Did you do python -m pip install basemap-data?

swiftienimbus commented 1 year ago
python -m pip install --no-deps basemap

No, I tried in the main environment with

python -m pip install --no-deps basemap since i am working with conda there

jklymak commented 1 year ago

you need to install baseman-data, which you have not done because you are using --no-deps.

molinav commented 1 year ago

If you are working in the conda environment, python -m pip install --no-deps basemap will install you basemap but not its dependencies, due to the --no-deps switch.

After installing basemap, you need to install the basemap requirements one by one with conda install <the_dependency_here>. The list of requirements is here:

https://github.com/matplotlib/basemap/blob/v1.3.7/packages/basemap/requirements.txt

So in summary, you still need:

conda install basemap-data numpy matplotlib pyproj pyshp
swiftienimbus commented 1 year ago

Bravisimo! sorry for too much obvious questions, it was long time since I didn't install everything from scratch in mac, thank you so so much, now I am able to import it via Spyder as well !! I followed the whole steps (installing the missing packages you mentioned before via conda :D

molinav commented 1 year ago

Nice to hear that! Hopefully in the mid future I will add support for MacOS ARM64 and it will be less painful to install basemap. I am a bit behind because of not having a MacOS device to play around, but several MacOS ARM64 users have been struggling in the past due to the lack of wheels or conda packages, so it is really something that I should focus on in the future. Thanks to doing the same already for Windows and GNU/Linux, the installation on those systems is much much easier.

efiring commented 1 year ago

@ocefpaf, Is making a conda-forge recipe for basemap on MacOS ARM64 something you can help with?

molinav commented 1 year ago

@efiring @ocefpaf For your information, the main issue with the MacOS ARM64 pipeline in Azure is coming from the lack of MacOS ARM64 runners, so the conda package must be built through cross-compilation, and I always end up with "bad architecture type" error messages. The rest of the pipelines that use normal compilation (Windows, GNU/Linux and MacOS x64) are working fine.

mpanning commented 9 months ago

Any updates on getting conda-forge recipes for MacOS arm64? When I try to install via conda-forge, I get the error appended to this post. It's singularly uninformative, telling me that packages are incompatible with each other, and then not listing which packages are incompatible.

This is in a conda environment with Python 3.11. I have been able to install basemap from the anaconda channel in a python 3.10 environment, but that's causing me problems for a code with a basemap dependency for other reasons likely unrelated to this package. Regardless, it would be really handy if it worked on conda-forge again.

conda install basemap Collecting package metadata (current_repodata.json): \ DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): repo.anaconda.com:443 DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): repo.anaconda.com:443 DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): repo.anaconda.com:443 DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): repo.anaconda.com:443 DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): conda.anaconda.org:443 DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): conda.anaconda.org:443 \ DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/r/noarch/current_repodata.json HTTP/1.1" 304 0 DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/main/osx-arm64/current_repodata.json HTTP/1.1" 304 0 DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/r/osx-arm64/current_repodata.json HTTP/1.1" 304 0 DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/main/noarch/current_repodata.json HTTP/1.1" 304 0 DEBUG:urllib3.connectionpool:https://conda.anaconda.org:443 "GET /conda-forge/osx-arm64/current_repodata.json HTTP/1.1" 200 None DEBUG:urllib3.connectionpool:https://conda.anaconda.org:443 "GET /conda-forge/noarch/current_repodata.json HTTP/1.1" 200 None done Solving environment: unsuccessful initial attempt using frozen solve. Retrying with flexible solve. Solving environment: unsuccessful attempt using repodata from current_repodata.json, retrying with next repodata source. Collecting package metadata (repodata.json): | DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/r/noarch/repodata.json HTTP/1.1" 304 0 DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/main/osx-arm64/repodata.json HTTP/1.1" 304 0 DEBUG:urllib3.connectionpool:https://conda.anaconda.org:443 "GET /conda-forge/noarch/repodata.json HTTP/1.1" 200 None DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/r/osx-arm64/repodata.json HTTP/1.1" 304 0 DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/main/noarch/repodata.json HTTP/1.1" 304 0 DEBUG:urllib3.connectionpool:https://conda.anaconda.org:443 "GET /conda-forge/osx-arm64/repodata.json HTTP/1.1" 200 None done Solving environment: unsuccessful initial attempt using frozen solve. Retrying with flexible solve. Solving environment: - Found conflicts! Looking for incompatible packages. This can take several minutes. Press CTRL-C to abort. failed

UnsatisfiableError: The following specifications were found to be incompatible with each other:

Output in format: Requested package -> Available versions

molinav commented 6 months ago

@mpanning Today I have finished updating the conda-forge recipe so that MacOS ARM64 is also supported. It would be great if you can give it a try. In my Mac mini M1 looks like below:

(base) vic@alpha:~$ conda create -y -n test311 -c conda-forge python=3.11 basemap           
Collecting package metadata (current_repodata.json): done
Solving environment: done

==> WARNING: A newer version of conda exists. <==
  current version: 23.3.1
  latest version: 23.11.0

Please update conda by running

    $ conda update -n base -c conda-forge conda

Or to minimize the number of packages updated during conda update use

     conda install conda=23.11.0

## Package Plan ##

  environment location: /opt/homebrew/Caskroom/miniforge/base/envs/test311

  added / updated specs:
    - basemap
    - python=3.11

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    contourpy-1.2.0            |  py311hd03642b_0         235 KB  conda-forge
    fonttools-4.47.0           |  py311h05b510d_0         2.6 MB  conda-forge
    kiwisolver-1.4.5           |  py311he4fd1f5_1          60 KB  conda-forge
    matplotlib-base-3.7.3      |  py311h3bc9839_0         7.2 MB  conda-forge
    pillow-10.1.0              |  py311hb9c5795_0        43.7 MB  conda-forge
    pyproj-3.6.1               |  py311h9a031f7_5         482 KB  conda-forge
    ------------------------------------------------------------
                                           Total:        54.2 MB

The following NEW packages will be INSTALLED:

  basemap            conda-forge/osx-arm64::basemap-1.3.9-py311h4b3e582_0 
  basemap-data       conda-forge/noarch::basemap-data-1.3.2-pyhd8ed1ab_3 
  brotli             conda-forge/osx-arm64::brotli-1.1.0-hb547adb_1 
  brotli-bin         conda-forge/osx-arm64::brotli-bin-1.1.0-hb547adb_1 
  bzip2              conda-forge/osx-arm64::bzip2-1.0.8-h93a5062_5 
  c-ares             conda-forge/osx-arm64::c-ares-1.24.0-h93a5062_0 
  ca-certificates    conda-forge/osx-arm64::ca-certificates-2023.11.17-hf0a4a13_0 
  certifi            conda-forge/noarch::certifi-2023.11.17-pyhd8ed1ab_0 
  contourpy          conda-forge/osx-arm64::contourpy-1.2.0-py311hd03642b_0 
  cycler             conda-forge/noarch::cycler-0.12.1-pyhd8ed1ab_0 
  fonttools          conda-forge/osx-arm64::fonttools-4.47.0-py311h05b510d_0 
  freetype           conda-forge/osx-arm64::freetype-2.12.1-hadb7bae_2 
  geos               conda-forge/osx-arm64::geos-3.12.1-h965bd2d_0 
  kiwisolver         conda-forge/osx-arm64::kiwisolver-1.4.5-py311he4fd1f5_1 
  krb5               conda-forge/osx-arm64::krb5-1.21.2-h92f50d5_0 
  lcms2              conda-forge/osx-arm64::lcms2-2.16-ha0e7c42_0 
  lerc               conda-forge/osx-arm64::lerc-4.0.0-h9a09cb3_0 
  libblas            conda-forge/osx-arm64::libblas-3.9.0-20_osxarm64_openblas 
  libbrotlicommon    conda-forge/osx-arm64::libbrotlicommon-1.1.0-hb547adb_1 
  libbrotlidec       conda-forge/osx-arm64::libbrotlidec-1.1.0-hb547adb_1 
  libbrotlienc       conda-forge/osx-arm64::libbrotlienc-1.1.0-hb547adb_1 
  libcblas           conda-forge/osx-arm64::libcblas-3.9.0-20_osxarm64_openblas 
  libcurl            conda-forge/osx-arm64::libcurl-8.5.0-h2d989ff_0 
  libcxx             conda-forge/osx-arm64::libcxx-16.0.6-h4653b0c_0 
  libdeflate         conda-forge/osx-arm64::libdeflate-1.19-hb547adb_0 
  libedit            conda-forge/osx-arm64::libedit-3.1.20191231-hc8eb9b7_2 
  libev              conda-forge/osx-arm64::libev-4.33-h93a5062_2 
  libexpat           conda-forge/osx-arm64::libexpat-2.5.0-hb7217d7_1 
  libffi             conda-forge/osx-arm64::libffi-3.4.2-h3422bc3_5 
  libgfortran        conda-forge/osx-arm64::libgfortran-5.0.0-13_2_0_hd922786_1 
  libgfortran5       conda-forge/osx-arm64::libgfortran5-13.2.0-hf226fd6_1 
  libjpeg-turbo      conda-forge/osx-arm64::libjpeg-turbo-3.0.0-hb547adb_1 
  liblapack          conda-forge/osx-arm64::liblapack-3.9.0-20_osxarm64_openblas 
  libnghttp2         conda-forge/osx-arm64::libnghttp2-1.58.0-ha4dd798_1 
  libopenblas        conda-forge/osx-arm64::libopenblas-0.3.25-openmp_h6c19121_0 
  libpng             conda-forge/osx-arm64::libpng-1.6.39-h76d750c_0 
  libsqlite          conda-forge/osx-arm64::libsqlite-3.44.2-h091b4b1_0 
  libssh2            conda-forge/osx-arm64::libssh2-1.11.0-h7a5bd25_0 
  libtiff            conda-forge/osx-arm64::libtiff-4.6.0-ha8a6c65_2 
  libwebp-base       conda-forge/osx-arm64::libwebp-base-1.3.2-hb547adb_0 
  libxcb             conda-forge/osx-arm64::libxcb-1.15-hf346824_0 
  libzlib            conda-forge/osx-arm64::libzlib-1.2.13-h53f4e23_5 
  llvm-openmp        conda-forge/osx-arm64::llvm-openmp-17.0.6-hcd81f8e_0 
  matplotlib-base    conda-forge/osx-arm64::matplotlib-base-3.7.3-py311h3bc9839_0 
  munkres            conda-forge/noarch::munkres-1.1.4-pyh9f0ad1d_0 
  ncurses            conda-forge/osx-arm64::ncurses-6.4-h463b476_2 
  numpy              conda-forge/osx-arm64::numpy-1.26.2-py311h6d074dd_0 
  openjpeg           conda-forge/osx-arm64::openjpeg-2.5.0-h4c1507b_3 
  openssl            conda-forge/osx-arm64::openssl-3.2.0-h0d3ecfb_1 
  packaging          conda-forge/noarch::packaging-23.2-pyhd8ed1ab_0 
  pillow             conda-forge/osx-arm64::pillow-10.1.0-py311hb9c5795_0 
  pip                conda-forge/noarch::pip-23.3.2-pyhd8ed1ab_0 
  proj               conda-forge/osx-arm64::proj-9.3.1-h93d94ba_0 
  pthread-stubs      conda-forge/osx-arm64::pthread-stubs-0.4-h27ca646_1001 
  pyparsing          conda-forge/noarch::pyparsing-3.1.1-pyhd8ed1ab_0 
  pyproj             conda-forge/osx-arm64::pyproj-3.6.1-py311h9a031f7_5 
  pyshp              conda-forge/noarch::pyshp-2.3.1-pyhd8ed1ab_0 
  python             conda-forge/osx-arm64::python-3.11.7-hdf0ec26_1_cpython 
  python-dateutil    conda-forge/noarch::python-dateutil-2.8.2-pyhd8ed1ab_0 
  python_abi         conda-forge/osx-arm64::python_abi-3.11-4_cp311 
  readline           conda-forge/osx-arm64::readline-8.2-h92ec313_1 
  setuptools         conda-forge/noarch::setuptools-68.2.2-pyhd8ed1ab_0 
  six                conda-forge/noarch::six-1.16.0-pyh6c4a22f_0 
  sqlite             conda-forge/osx-arm64::sqlite-3.44.2-hf2abe2d_0 
  tk                 conda-forge/osx-arm64::tk-8.6.13-h5083fa2_1 
  tzdata             conda-forge/noarch::tzdata-2023d-h0c530f3_0 
  wheel              conda-forge/noarch::wheel-0.42.0-pyhd8ed1ab_0 
  xorg-libxau        conda-forge/osx-arm64::xorg-libxau-1.0.11-hb547adb_0 
  xorg-libxdmcp      conda-forge/osx-arm64::xorg-libxdmcp-1.1.3-h27ca646_0 
  xz                 conda-forge/osx-arm64::xz-5.2.6-h57fd34a_0 
  zstd               conda-forge/osx-arm64::zstd-1.5.5-h4f39d0f_0 

Downloading and Extracting Packages

Preparing transaction: done                                                                                             
Verifying transaction: done                                                                                             
Executing transaction: done                                                                                             
#                                                                                                                       
# To activate this environment, use                                                                                     
#
#     $ conda activate test311
#
# To deactivate an active environment, use
#
#     $ conda deactivate                                                                                            

A simple test printing the basemap version in this environment:

(base) vic@alpha:~$ conda activate test311
(test311) vic@alpha:~$ python -c "from mpl_toolkits import basemap; print(basemap.__version__)"
1.3.9

I am not an expert on Miniforge/Anaconda, but while testing I realised that it is very important for basemap not to mix with other channels, i.e. to install basemap and all its dependencies from the conda-forge channel.

molinav commented 6 months ago

I am closing the issue, because with the upcoming release 1.4.0 (in a couple of days) I will be uploading MacOS wheels to PyPI manually, and since release 1.3.9 we already have MacOS arm64 packages in the conda-forge channel, so hopefully these installation issues on MacOS will become less common.

Feel free to reopen the issue if any of the problems persists.