NOAA-MDL / grib2io

Python interface to the NCEP G2C Library for reading and writing GRIB2 messages.
https://noaa-mdl.github.io/grib2io
MIT License
30 stars 11 forks source link

Error installing from pip #146

Closed wmay closed 4 months ago

wmay commented 4 months ago

I'm trying to install grib2io with pip, after installing g2c using spack. But I get an unintelligible error.

Here's my installation command:

G2C_DIR=/home/wmay/spack/opt/spack/linux-ubuntu22.04-skylake/gcc-11.4.0/g2c-1.9.0-757z2u7sacuazj4p3sykh7ut5hbksxlo/lib pip install grib2io

And here's the shell output:

Defaulting to user installation because normal site-packages is not writeable
Collecting grib2io
  Using cached grib2io-2.2.2.tar.gz (46.7 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: numpy in /home/wmay/.local/lib/python3.10/site-packages (from grib2io) (1.26.4)
Requirement already satisfied: pyproj in /home/wmay/.local/lib/python3.10/site-packages (from grib2io) (3.6.1)
Requirement already satisfied: certifi in /home/wmay/.local/lib/python3.10/site-packages (from pyproj->grib2io) (2024.2.2)
Building wheels for collected packages: grib2io
  Building wheel for grib2io (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for grib2io (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [117 lines of output]
      Use static libs: False
          incdirs = [None, '/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/numpy/core/include']
          libdirs = [None]
          extra_objects = []
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-310
      creating build/lib.linux-x86_64-cpython-310/grib2io
      copying src/grib2io/_grib2io.py -> build/lib.linux-x86_64-cpython-310/grib2io
      copying src/grib2io/__config__.py -> build/lib.linux-x86_64-cpython-310/grib2io
      copying src/grib2io/xarray_backend.py -> build/lib.linux-x86_64-cpython-310/grib2io
      copying src/grib2io/__init__.py -> build/lib.linux-x86_64-cpython-310/grib2io
      copying src/grib2io/templates.py -> build/lib.linux-x86_64-cpython-310/grib2io
      creating build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section6.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section4_discipline4.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section1.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section4_discipline20.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section0.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/__init__.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section4_discipline10.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section3.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/originating_centers.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section4_discipline209.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section4_discipline3.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section4_discipline2.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section4_discipline1.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section4_discipline0.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section5.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      copying src/grib2io/tables/section4.py -> build/lib.linux-x86_64-cpython-310/grib2io/tables
      creating build/lib.linux-x86_64-cpython-310/grib2io/utils
      copying src/grib2io/utils/__init__.py -> build/lib.linux-x86_64-cpython-310/grib2io/utils
      copying src/grib2io/utils/arakawa_rotated_grid.py -> build/lib.linux-x86_64-cpython-310/grib2io/utils
      copying src/grib2io/utils/gauss_grid.py -> build/lib.linux-x86_64-cpython-310/grib2io/utils
      copying src/grib2io/utils/rotated_grid.py -> build/lib.linux-x86_64-cpython-310/grib2io/utils
      running egg_info
      writing src/grib2io.egg-info/PKG-INFO
      writing dependency_links to src/grib2io.egg-info/dependency_links.txt
      writing entry points to src/grib2io.egg-info/entry_points.txt
      writing requirements to src/grib2io.egg-info/requires.txt
      writing top-level names to src/grib2io.egg-info/top_level.txt
      reading manifest file 'src/grib2io.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files matching '*.py[cod]' found anywhere in distribution
      warning: no previously-included files matching '*.c' found anywhere in distribution
      warning: no previously-included files matching '*.so' found anywhere in distribution
      adding license file 'LICENSE'
      writing manifest file 'src/grib2io.egg-info/SOURCES.txt'
      copying src/grib2io/.DS_Store -> build/lib.linux-x86_64-cpython-310/grib2io
      running build_ext
      Traceback (most recent call last):
        File "/home/wmay/.local/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/home/wmay/.local/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/home/wmay/.local/lib/python3.10/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-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/build_meta.py", line 410, in build_wheel
          return self._build_with_temp_dir(
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/build_meta.py", line 395, in _build_with_temp_dir
          self.run_setup()
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 223, in <module>
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/__init__.py", line 104, in setup
          return distutils.core.setup(**attrs)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/core.py", line 184, in setup
          return run_commands(dist)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/core.py", line 200, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 969, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/dist.py", line 967, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-66uraamc/normal/local/lib/python3.10/dist-packages/wheel/bdist_wheel.py", line 368, in run
          self.run_command("build")
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/cmd.py", line 316, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/dist.py", line 967, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/command/build.py", line 132, in run
          self.run_command(cmd_name)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/cmd.py", line 316, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/dist.py", line 967, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/dist.py", line 988, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/command/build_ext.py", line 359, in run
          self.build_extensions()
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/command/build_ext.py", line 479, in build_extensions
          self._build_extensions_serial()
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/setuptools/_distutils/command/build_ext.py", line 505, in _build_extensions_serial
          self.build_extension(ext)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/Cython/Distutils/build_ext.py", line 130, in build_extension
          new_ext = cythonize(
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/Cython/Build/Dependencies.py", line 1010, in cythonize
          module_list, module_metadata = create_extension_list(
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/Cython/Build/Dependencies.py", line 886, in create_extension_list
          m, metadata = create_extension(template, kwds)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/Cython/Build/Dependencies.py", line 762, in default_create_extension
          depends = resolve_depends(kwds['depends'], include_dirs)
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/Cython/Build/Dependencies.py", line 469, in resolve_depends
          path = resolve_depend(depend, include_dirs)
        File "Cython/Utils.py", line 90, in Cython.Utils.cached_function.wrapper
        File "/tmp/pip-build-env-66uraamc/overlay/local/lib/python3.10/dist-packages/Cython/Build/Dependencies.py", line 480, in resolve_depend
          path = join_path(dir, depend)
        File "Cython/Utils.py", line 90, in Cython.Utils.cached_function.wrapper
        File "/usr/lib/python3.10/posixpath.py", line 76, in join
          a = os.fspath(a)
      TypeError: expected str, bytes or os.PathLike object, not NoneType
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for grib2io
Failed to build grib2io
ERROR: Could not build wheels for grib2io, which is required to install pyproject.toml-based projects

Any ideas about what could be causing this? Is the conda installation better supported?

wmay commented 4 months ago

Oh here we go. I just had the G2C directory off by one folder. This works:

G2C_DIR=/home/wmay/spack/opt/spack/linux-ubuntu22.04-skylake/gcc-11.4.0/g2c-1.9.0-757z2u7sacuazj4p3sykh7ut5hbksxlo pip install grib2io

Just need to leave off the "lib" folder.