安装 Shapely 时出现“OSError:找不到 geos_c”错误

27
我是一个新手,想用Python制作/绘制地图。一直在尝试按照这篇博客文章生成世界地图(http://sciblogs.co.nz/seeing-data/2011/08/12/plotting-geographic-data-on-a-world-map-with-python/),但在这里遇到了一些问题:
  1. Installing Basemap (a Matplotlib extension for plotting data on geographic projections).

     from mpl_toolkits.basemap import Basemap
     Traceback (most recent call last):
     File "geos_demo.py", line 1, in <module>
     from mpl_toolkits.basemap import Basemap
     ImportError: No module named mpl_toolkits.basemap
    
  2. Install Shapely, but the following error occurs [1]:

  3. Then I went into the geos.py file and change all the references of geos.dll to geos_c.dll, as recommended by the link here: http://osgeo-org.1560.n6.nabble.com/osgeo4w-258-Problems-with-python-shapely-python-2-7-2-td4336816.html

  4. However, the same error [1] occurs.

我正在使用Python 2.7.1和Mac OS 10.7.4。如果需要提供更多信息,请告诉我,非常感谢社区的任何指导!谢谢!
    from shapely.geometry import Point
    Traceback (most recent call last): File "<stdin>", line 1, in <module>
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geometry/__init__.py", line 4, in <module>
    from geo import box, shape, asShape, mapping
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geometry/geo.py", line 5, in <module>
    from point import Point, asPoint
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geometry/point.py", line 7, in <module>
    from shapely.coords import required
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/coords.py", line 8, in <module>
    from shapely.geos import lgeos
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geos.py", line 59, in <module>
    _lgeos = load_dll('geos_c', fallbacks=alt_paths)
     File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geos.py", line 44, in load_dll
    libname, fallbacks or []))
    OSError: Could not find library geos_c or load any of its variants        ['/Library/Frameworks/GEOS.framework/Versions/Current/GEOS', '/opt/local/lib/libgeos_c.dylib']
6个回答

39

针对第2至4个问题,您需要在系统上安装GEOS。

如果您有Homebrew,您可以执行以下操作:

brew install geos

如果您没有Homebrew,请在此处安装:链接


3
在执行brew install geos之后,我仍然遇到了同样的错误:OSError: 找不到库geos_c或其任何变体 ['/Library/Frameworks/GEOS.framework/Versions/Current/GEOS', '/opt/local/lib/libgeos_c.dylib']。 - tommy.carstensen
我在使用brew install geos安装geos后遇到了同样的问题。它显示无法找到lib geos_c或加载其任何变体。 - Nishant Bhindi

15

在Ubuntu上安装GEOS,这是我的解决方案:

$ sudo apt-get install libgeos-dev

12

在 OS X 10.11(El Capitan)和 Boxen 中,我需要这样做:

brew install geos
sudo mkdir /opt/local
sudo ln -s /opt/boxen/homebrew/lib /opt/local/lib

为了让Shapely在它愿意查找的位置之一中找到libgeos_c.dylib


2
我在使用fink安装的libgeos时遇到了cartopy无法运行的问题,不得不使用这个技巧来解决问题 - 感谢提示! - user1718097
1
Jace的建议解决了问题。 - avelino

2
问题似乎是您实际上没有安装所需的模块。
像这样的 Python 代码行:
from mpl_toolkits.basemap import Basemap

导入语句会告诉你的脚本使用模块(或其他需要已安装的 Python 代码)。对于每个提到的软件包(NumPy、Matplotlib、Basemap),你需要弄清楚如何在系统上安装它们。在 NumPy 和 Matplotlib 的情况下,这可能很复杂,因为它们需要编译。例如,这些是 NumPy 的说明。如果你只想尝试在那篇博客文章中玩耍,那么你可以使用像 PythonAnywhere 这样已经安装了 numpy、matplotlib 和 basemap 的服务。 (免责声明,我在 PythonAnywhere 上工作...)

谢谢@aychedee。我已经安装了numpy,但是无法弄清楚basemap。PythonAnywhere是否可以帮助安装basemap以及其他库? - msunbot
嗨Michelle,实际上basemap已作为标准包安装。完成该教程唯一的区别是您需要将绘图保存为文件然后下载,而不是直接显示。 - aychedee

1

在 Windows 10 上,Python 3.6.5 64 位版

  • 安装 osgeo4w
  • 将安装文件夹添加到 PATH,例如 C:\OSGeo4W64\bin(必须包含 geos_c.dll)
  • 重新启动命令行

尽情享受吧!


请你能否提供更具体的细节关于第二步?是哪个路径?在哪里?怎么做? - Aaron Bramson
从 https://trac.osgeo.org/osgeo4w/ 安装 OSGeo4,然后将安装 OSGeo4 的文件夹添加到您的 PATH 中,例如 https://dev59.com/vlcP5IYBdhLWcg3whaQD#44272417。 - y0j0
1
谢谢。我在使用PyInstaller时遇到了ModuleNotFoundError: No module named 'shapely._geos'的问题。安装OSGeo4W64后,我只需要在PyInstaller命令中添加--hidden-import shapely._geos,就可以解决这个问题了。 - mrc

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接