Skip to content

Problem with installation on linux/arm64 conda environment #581

@leonid-butenko

Description

@leonid-butenko

Hi,

I'm trying to install basemap on my mac using docker. As long as conda-forge doesn't seem to support basemap for linux-aarch64 architecture, i try to do that with pip. What am I doing wrong? Running basemap build manually gives same result

> docker run -it --rm --platform=linux/arm64 condaforge/miniforge3:latest
(base) root@1a3647250cc2:/# conda create -y -n test 
(base) root@1a3647250cc2:/# conda activate test
(test) root@1a3647250cc2:/# conda install -y matplotlib pyproj=3.5 proj geos numpy=1.24
(test) root@1a3647250cc2:/# GEOS_DIR=$CONDA_PREFIX python -m pip install basemap                                                                                                                               
Collecting basemap                                                                                                                                                                                                    
  Downloading basemap-1.3.7.zip (156 kB)                                                                                                                                                                              
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 156.4/156.4 kB 2.8 MB/s eta 0:00:00
  Installing build dependencies ... done                                                                                                                                                                              
  Getting requirements to build wheel ... done                                                                                                                                                                        
  Preparing metadata (pyproject.toml) ... done                                                                                                                                                                        
Collecting basemap-data<1.4,>=1.3.2 (from basemap)                                                                                                                                                                    
  Downloading basemap_data-1.3.2-py2.py3-none-any.whl (30.5 MB)                                                                                                                                                       
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 30.5/30.5 MB 44.9 MB/s eta 0:00:00
Collecting pyshp<2.4,>=1.2 (from basemap)                                                                                                                                                                             
  Downloading pyshp-2.3.1-py2.py3-none-any.whl (46 kB)                                                                                                                                                                
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 46.5/46.5 kB 26.3 MB/s eta 0:00:00
Requirement already satisfied: matplotlib<3.8,>=1.5 in /opt/conda/envs/test/lib/python3.11/site-packages (from basemap) (3.7.2)                                                                                       
Requirement already satisfied: pyproj<3.6.0,>=1.9.3 in /opt/conda/envs/test/lib/python3.11/site-packages (from basemap) (3.5.0)                                                                                       
Requirement already satisfied: numpy<1.25,>=1.22 in /opt/conda/envs/test/lib/python3.11/site-packages (from basemap) (1.24.4)                                                                                         
Requirement already satisfied: contourpy>=1.0.1 in /opt/conda/envs/test/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (1.1.0)                                                                     
Requirement already satisfied: cycler>=0.10 in /opt/conda/envs/test/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (0.11.0)                                                                        
Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/envs/test/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (4.41.0)                                                                   
Requirement already satisfied: kiwisolver>=1.0.1 in /opt/conda/envs/test/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (1.4.4)                                                                    
Requirement already satisfied: packaging>=20.0 in /opt/conda/envs/test/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (23.1)                                                                       
Requirement already satisfied: pillow>=6.2.0 in /opt/conda/envs/test/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (10.0.0)                                                                       
Requirement already satisfied: pyparsing<3.1,>=2.3.1 in /opt/conda/envs/test/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (3.0.9)                                                                
Requirement already satisfied: python-dateutil>=2.7 in /opt/conda/envs/test/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (2.8.2)                                                                 
Requirement already satisfied: certifi in /opt/conda/envs/test/lib/python3.11/site-packages (from pyproj<3.6.0,>=1.9.3->basemap) (2023.5.7)                                                                           
Requirement already satisfied: six>=1.5 in /opt/conda/envs/test/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib<3.8,>=1.5->basemap) (1.16.0)                                                      
Building wheels for collected packages: basemap                                                                                                                                                                       
  Building wheel for basemap (pyproject.toml) ... error                                                                                                                                                               
  error: subprocess-exited-with-error                                                                                                                                                                                 
                                                                                                                                                                                                                      
  × Building wheel for basemap (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [121 lines of output]
      /tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/dist.py:945: SetuptoolsDeprecationWarning: The namespace_packages parameter is deprecated.
      !!
      
              ********************************************************************************
              Please replace its usage with implicit namespaces (PEP 420).
      
              See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages for details.
              ********************************************************************************
      
      !!
        ep.load()(self, ep.name, value)
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-aarch64-cpython-311
      creating build/lib.linux-aarch64-cpython-311/mpl_toolkits
      copying src/mpl_toolkits/__init__.py -> build/lib.linux-aarch64-cpython-311/mpl_toolkits
      creating build/lib.linux-aarch64-cpython-311/mpl_toolkits/basemap
      copying src/mpl_toolkits/basemap/proj.py -> build/lib.linux-aarch64-cpython-311/mpl_toolkits/basemap
      copying src/mpl_toolkits/basemap/__init__.py -> build/lib.linux-aarch64-cpython-311/mpl_toolkits/basemap
      copying src/mpl_toolkits/basemap/solar.py -> build/lib.linux-aarch64-cpython-311/mpl_toolkits/basemap
      copying src/mpl_toolkits/basemap/test.py -> build/lib.linux-aarch64-cpython-311/mpl_toolkits/basemap
      copying src/mpl_toolkits/basemap/cm.py -> build/lib.linux-aarch64-cpython-311/mpl_toolkits/basemap
      copying src/mpl_toolkits/basemap/diagnostic.py -> build/lib.linux-aarch64-cpython-311/mpl_toolkits/basemap
      running build_ext
      
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
      __geos_major_version__ = GEOS_VERSION_MAJOR
      #if __geos_version__ != "2.2.3-CAPI-1.1.1":
      #     raise ValueError('version 2.2.3 of the geos library is required')
      
      # intialize GEOS (parameters are notice and error function callbacks).
      initGEOS(notice_h, error_h)
               ^
      ------------------------------------------------------------
      
      src/_geoslib.pyx:136:9: Cannot assign type 'void (char *, char *) except *' to 'GEOSMessageHandler'
      
      Error compiling Cython file:
      ------------------------------------------------------------
      ...
      __geos_major_version__ = GEOS_VERSION_MAJOR
      #if __geos_version__ != "2.2.3-CAPI-1.1.1":
      #     raise ValueError('version 2.2.3 of the geos library is required')
      
      # intialize GEOS (parameters are notice and error function callbacks).
      initGEOS(notice_h, error_h)
                         ^
      ------------------------------------------------------------
      
      src/_geoslib.pyx:136:19: Cannot assign type 'void (char *, char *) except *' to 'GEOSMessageHandler'
      Compiling src/_geoslib.pyx because it changed.
      [1/1] Cythonizing src/_geoslib.pyx
      Traceback (most recent call last):
        File "/opt/conda/envs/test/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/opt/conda/envs/test/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/opt/conda/envs/test/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 416, in build_wheel
          return self._build_with_temp_dir(['bdist_wheel'], '.whl',
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 401, in _build_with_temp_dir
          self.run_setup()
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 338, in run_setup
          exec(code, locals())
        File "<string>", line 171, in <module>
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/__init__.py", line 107, in setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 185, in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/wheel/bdist_wheel.py", line 343, in run
          self.run_command("build")
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/command/build.py", line 131, in run
          self.run_command(cmd_name)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 1234, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/command/build_ext.py", line 84, in run
          _build_ext.run(self)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py", line 345, in run
          self.build_extensions()
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py", line 467, in build_extensions
          self._build_extensions_serial()
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py", line 493, in _build_extensions_serial
          self.build_extension(ext)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/setuptools/command/build_ext.py", line 246, in build_extension
          _build_ext.build_extension(self, ext)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/Cython/Distutils/build_ext.py", line 122, in build_extension
          new_ext = cythonize(
                    ^^^^^^^^^^
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/Cython/Build/Dependencies.py", line 1134, in cythonize
          cythonize_one(*args)
        File "/tmp/pip-build-env-q5qoi0gb/overlay/lib/python3.11/site-packages/Cython/Build/Dependencies.py", line 1301, in cythonize_one
          raise CompileError(None, pyx_file)
      Cython.Compiler.Errors.CompileError: src/_geoslib.pyx
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for basemap
Failed to build basemap
ERROR: Could not build wheels for basemap, which is required to install pyproject.toml-based projects

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions