On 2023-09-12 18:58, Joel Breazeale via Cygwin wrote:
The shapely Python 3.9 package is failing to build.  Please see the
messages in red and the one in green below:


[bin]$ /usr/local/bin/pip3.9 install shapely
Collecting shapely
   Using cached shapely-2.0.1.tar.gz (275 kB)
   Installing build dependencies ... done
   Getting requirements to build wheel ... done
   Installing backend dependencies ... done
   Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: numpy>=1.14 in
/usr/local/lib/python3.9/site-packages (from shapely) (1.25.2)
Building wheels for collected packages: shapely
   Building wheel for shapely (pyproject.toml) ... error
   error: *subprocess-exited-with-error*


   × Building wheel for shapely (pyproject.toml) did not run successfully.
   │ exit code: 1
   ╰─> [103 lines of output]
       <string>:8: DeprecationWarning: pkg_resources is deprecated as an
API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
       Could not find geos-config executable. Either append the path to
geos-config to PATH or manually provide the include_dirs, library_dirs,
libraries and other link args for compiling against a GEOS version >=3.5.
       running bdist_wheel
       running build
       running build_py
       creating build
       creating build/lib.cygwin-3.4.9-x86_64-cpython-39
       creating build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/affinity.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/constructive.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/coordinates.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/coords.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/creation.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/decorators.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/errors.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/geos.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/io.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/linear.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/measurement.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/ops.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/plotting.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/predicates.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/prepared.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/set_operations.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/speedups.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/strtree.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/testing.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/validation.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/wkb.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/wkt.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/_enum.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/_geometry.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/_ragged_array.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/_version.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/__init__.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       creating build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/algorithms
       copying shapely/algorithms/cga.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/algorithms
       copying shapely/algorithms/polylabel.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/algorithms
       copying shapely/algorithms/__init__.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/algorithms
       creating build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/base.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/collection.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/conftest.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/geo.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/linestring.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/multilinestring.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/multipoint.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/multipolygon.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/point.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/polygon.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       copying shapely/geometry/__init__.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/geometry
       creating build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/common.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_constructive.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_coordinates.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_creation.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_creation_indices.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_geometry.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_io.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_linear.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_measurement.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_misc.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_plotting.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_predicates.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_ragged_array.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_set_operations.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_strtree.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/test_testing.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       copying shapely/tests/__init__.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests
       creating build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/vectorized
       copying shapely/vectorized/__init__.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/vectorized
       creating
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_collection.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_coords.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_decimal.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_emptiness.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_format.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_geometry_base.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_hash.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_linestring.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_multi.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_multilinestring.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_multipoint.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_multipolygon.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_point.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/test_polygon.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/tests/geometry/__init__.py ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/tests/geometry
       copying shapely/_geos.pxd ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       copying shapely/_pygeos_api.pxd ->
build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely
       UPDATING build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/_version.py
       set build/lib.cygwin-3.4.9-x86_64-cpython-39/shapely/_version.py to
'2.0.1'
       running build_ext
       building 'shapely.lib' extension
       creating build/temp.cygwin-3.4.9-x86_64-cpython-39
       creating build/temp.cygwin-3.4.9-x86_64-cpython-39/src
       gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall
-I/usr/include/python3.9
-I/tmp/pip-build-env-udfc5yaz/overlay/lib/python3.9/site-packages/numpy/core/include
-c src/c_api.c -o build/temp.cygwin-3.4.9-x86_64-cpython-39/src/c_api.o
       In file included from src/c_api.h:22,
                        from src/c_api.c:15:
       src/geos.h:15:10: fatal error: geos_c.h: No such file or directory
          15 | #include <geos_c.h>
             |          ^~~~~~~~~~
       compilation terminated.
       error: command '/usr/bin/gcc' failed with exit code 1
       [end of output]

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

I presume the inability to find geos-config then caused geos_c.h to not be
able to be found.

Both are part of the same package.

I have shapely installed and working under Homebrew (Python 3.11.5), Oracle
Linux 9.2 under VirtualBox (Python 3.9.16) and Oracle Linux 8 (Python
3.11.4), just not under cygwin.

What do you think is the fix for this issue?

$ cygcheck -p geos_c.h
Found 3 matches for geos_c.h
libgeos-devel-3.10.3-1 - libgeos-devel: Geometry Engine for Topology - (devel)
libgeos-devel-3.11.0-1 - libgeos-devel: Geometry Engine for Topology - (devel)
libgeos-devel-3.11.1-1 - libgeos-devel: Geometry Engine for Topology - (devel)
$ cygcheck -p geos-config
Found 3 matches for geos-config
libgeos-devel-3.10.3-1 - libgeos-devel: Geometry Engine for Topology - (devel)
libgeos-devel-3.11.0-1 - libgeos-devel: Geometry Engine for Topology - (devel)
libgeos-devel-3.11.1-1 - libgeos-devel: Geometry Engine for Topology - (devel)

Neither is installed, because to build library code you typically need to have installed a [lib]...-devel package, which other packages do not usually depend on.

Check the prereqs in python, then check the Cygwin packages that provide packages with that root name, then install them, before trying pip install, which is outside of Cygwin packaging, so you need to do everything yourself!

If in doubt, you can just install everything which matches geos or whatever!

--
Take care. Thanks, Brian Inglis              Calgary, Alberta, Canada

La perfection est atteinte                   Perfection is achieved
non pas lorsqu'il n'y a plus rien à ajouter  not when there is no more to add
mais lorsqu'il n'y a plus rien à retirer     but when there is no more to cut
                                -- Antoine de Saint-Exupéry


--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to