You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M1环境下无法找到并安装Shapely依赖的geos_c问题求助

解决Mac M1上OSError: Could not find lib geos_c的问题

首先得明确:你用pip install geos装的0.2.3版本包不是Shapely需要的依赖——那个只是一个过时的Python绑定工具,Shapely真正依赖的是底层的C库libgeos_c,在M1架构的Mac上,得通过系统级工具安装正确的库才能解决问题。

下面是针对M1 Mac的具体解决步骤:

  1. 用Homebrew安装系统级GEOS库
    M1 Mac的Homebrew默认路径是/opt/homebrew(和x86架构的/usr/local不同,这点要注意),先确保你装的是适配arm架构的Homebrew,然后在终端运行:

    brew install geos
    

    这会自动在/opt/homebrew/lib下生成libgeos_c.so等所需文件。

  2. 让Shapely定位到GEOS库
    有两种可靠的方式:

    • 方法一:临时设置环境变量
      在启动API服务前,先在终端里设置动态库路径:

      export DYLD_LIBRARY_PATH=/opt/homebrew/lib:$DYLD_LIBRARY_PATH
      

      之后再运行你的服务即可。如果想让这个配置永久生效,可以把这行代码添加到~/.zshrc(用zsh终端)或~/.bash_profile(用bash终端)里,再执行source ~/.zshrc(对应终端类型)让配置生效。

    • 方法二:重新编译安装Shapely
      先卸载已有的Shapely:

      pip uninstall -y shapely
      

      然后指定GEOS的安装路径重新安装Shapely(对应你pyproject.toml里的1.8.0版本):

      GEOS_INCLUDE_PATH=/opt/homebrew/include GEOS_LIBRARY_PATH=/opt/homebrew/lib pip install shapely==1.8.0
      

      这种方式会让Shapely在编译时直接绑定到Homebrew安装的GEOS库,后续无需额外设置环境变量。

  3. 验证安装有效性
    打开Python终端,运行以下代码测试:

    from shapely.geometry import Point
    test_point = Point(1, 2)
    print(test_point)
    

    如果没有抛出错误,说明libgeos_c已经被正确加载了。

如果你用Poetry管理依赖,确保系统级GEOS安装完成后,重新运行poetry install即可,Poetry会自动识别到系统中的GEOS库。

内容的提问来源于stack exchange,提问作者Chandan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:37:33