Brian, I was not aware of the cygcheck command. I won't forget it! Once libgeos-devel-3.11.1-1 was installed the build worked great! Thank you, Joel Breazeale On Tue, Sep 12, 2023 at 9:02 PM Brian Inglis wrote: > 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] > > :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 > > | ^~~~~~~~~~ > > 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 > >