Shapely: windows et geos_c.dll

Créé le 16 nov. 2015  ·  8Commentaires  ·  Source: Toblerity/Shapely

Salut les gars,
Je n'ai pas réussi à être importé en python même avec la variable GEOS_LIBRARY_PATH définie sur mon geos_c.dll. Il se plaint d'une fonction GEOSversion manquante. Cependant, la définition de GEOS_LIBRARY_PATH sur geos_c.dll lors de l'installation avec pip a bien fonctionné. Au début, il s'est également plaint du même problème là-bas.

Ce qui a fonctionné pour moi :
J'ai modifié le fichier libgeos.py (geos.py dans ma version) pour essayer de charger à la place geos_c.dll (dans la section win32). Cela a fonctionné pour moi maintenant, mais ce serait peut-être une amélioration d'essayer de charger les deux.

Je ne suis pas sûr des dll de gdal ou de la façon dont elles sont généralement nommées sous Windows, car c'est mon premier essai avec GDAL et bien fait. Les binaires ont été précompilés à partir de gisinternals (les liaisons python GDAL ont également indiqué cela comme une option pour les faire fonctionner).

Commentaire le plus utile

sur windows 10, python 3.6.5 64bit

  • installer osgeo4w
  • ajouter le dossier installé au chemin, par exemple C:\OSGeo4W64\bin (doit contenir geos_c.dll)
  • redémarrer la ligne de commande

Profitez

Tous les 8 commentaires

@TheSy, nous avons uniquement conçu GEOS_LIBRARY_PATH pour être utilisé au moment de l'installation, cela fait partie du problème. L'autre partie est que, comme vous le voyez, nous saisissons le nom "gdal.dll" dans https://github.com/Toblerity/Shapely/blob/maint-1.5/shapely/geos.py#L130 -L138 . Je ne veux pas prendre en charge de nombreuses variantes du nom de la DLL, mais si "geos_c.dll" est très courant dans la nature, j'accepte volontiers un chemin ou un PR.

@sgillies ne sait pas comment les dll sont généralement nommées car c'était l'un de mes premiers essais avec python (généralement un programmeur c++) et aussi avec les bibliothèques SIG en général.

J'ai regardé comment la dll est nommée dans le gestionnaire de packages osgeo4w et il semble qu'elle s'appelle également "geos_c.dll". Les binaires de gisinternals contenaient deux dll : geos.dll et geos_c.dll. Je n'ai pas bien fonctionné avec geos.dll, même lors de l'installation avec pip (pour autant que je m'en souvienne).

Un point de données. Shapely est corrigé pour utiliser go_c.dll dans https://github.com/conda-forge/staged-recipes/blob/master/recipes/shapely/geos_c.win.patch (et je pense que Chrisoph Gohlke fait la même chose). La raison en revient à https://github.com/conda-forge/staged-recipes/blob/master/recipes/geos/cmake.win.patch.

Discussion précédente pertinente : https://github.com/SciTools/conda-recipes-scitools/issues/29

La distribution OSGeo4W l'envoie également sous le nom de "geos_c.dll".

Il est encore temps pour un PR de l'obtenir pour le 1.5.14 ...

Ai-je raison de penser que geos.dll est la bibliothèque C++ et geos_c.dll est l'API C ? Dans ce cas, lier à geos.dll serait la mauvaise chose à faire.

J'ai contourné cela sur OSGeo4W (Windows) en copiant geos_c.dll dans geos.dll . :Ne vois pas de mal:

sur windows 10, python 3.6.5 64bit

  • installer osgeo4w
  • ajouter le dossier installé au chemin, par exemple C:\OSGeo4W64\bin (doit contenir geos_c.dll)
  • redémarrer la ligne de commande

Profitez

Cette page vous a été utile?
0 / 5 - 0 notes