【问题标题】:Could not find library geos_c or load any of its variants找不到库 geos_c 或加载其任何变体
【发布时间】:2013-11-13 13:51:18
【问题描述】:

我在 Fedora 19 中使用 Python。我想运行以下行:

import shapely.geometry

但出现以下错误:

OSError: Could not find library geos_c or load any of its variants ['libgeos_c.so.1', 'libgeos_c.so']

我安装了 Shapely 包,以及以下两个库:

  • glibc-2.17-4.fc19.i686.rpm
  • geos-3.3.8-2.fc19.i686.rpm.

我可以做些什么来解决这个问题?

【问题讨论】:

标签: python shapely


【解决方案1】:

我使用的是 Linux (Red Hat),但出现此错误:

OSError: /home/[user]/.conda/envs/ox/lib/libgeos_c.so: 无法打开共享对象文件:没有这样的文件或目录

什么对我有用:

conda install geos

【讨论】:

    【解决方案2】:

    如果你有macos,你应该运行:

    brew install geos
    

    来源分布

    如果您想从源代码构建 Shapely 以与其他依赖 GEOS 的模块(例如 cartopy 或 osgeo.ogr)兼容,或者想使用与项目轮子中包含的版本不同的 GEOS 版本,您应该首先安装系统上的 GEOS 库、Cython 和 Numpy(使用 apt、yum、brew 或其他方式),然后直接 pip 忽略二进制轮子。

    pip install shapely --no-binary shapely
    

    如果您已将 GEOS 安装到标准位置,则 geos-config 程序将用于获取编译器和链接器选项。如果 geos-config 不在您的可执行文件中,可以使用 GEOS_CONFIG 环境变量指定它,例如:

    GEOS_CONFIG=/path/to/geos-config pip install shapely
    

    【讨论】:

      【解决方案3】:
      brew install geos
      

      只是这个安装解决了我的问题。

      【讨论】:

        【解决方案4】:

        在 ubuntu 中,以下命令应该会处理它。 这一切都归结为以下软件包。

        (2017 年原版)

        sudo apt-get install libgeos-c1 libgeos-3.4.2
        

        编辑:(2020 年更新版本)

        sudo apt-get install libgeos-c1v5 libgeos-3.7.1
        

        【讨论】:

          【解决方案5】:

          我在 Jupyter Notebook 上没有问题,但是当我使用 PyCharm 时遇到了这个问题。 在机器上尝试了多个窗口,以下故障排除步骤解决了问题

          pip install geos
          

          转到PyCharm,文件->设置->项目->项目解释器(检查你的python.exe文件所在的路径是否正确)->添加

          检查,在 Virtualenv Environment -> Base Interpreter 指向您拥有 python.exe 的正确位置

          同样适用于系统解释器->解释器 还有 Pipenv Environment -> Base Interpreter

          确保所有人都指向正确的路径。我遇到了这个问题,因为我有多个 IDE,因此有多个 python.exe 可用的目录。它们指向不正确的目录。

          在故障排除过程中,我还卸载并重新安装了conda install shapely,因为我从 PyCharm 指向 Anaconda 目录。希望对您有所帮助。

          下面的链接也很有帮助https://www.jetbrains.com/help/pycharm/installing-uninstalling-and-upgrading-packages.html#conda-package-manager

          【讨论】:

            【解决方案6】:

            设置LD_LIBRARY_PATH,然后运行python

            export LD_LIBRARY_PATH=/path_to/geos/lib:$LD_LIBRARY_PATH
            
            python mytest.py
            

            【讨论】:

              【解决方案7】:

              使用 pip 安装,并且遇到了同样的问题。所以我继续安装它:

              sudo apt-get install libgeos-dev
              

              它奏效了。我正在运行 Ubuntu,所以如果你在 Fedora 上,你应该运行:

              sudo yum install geos-devel
              

              【讨论】:

              • 在 Fedora 上应该是sudo yum install geos-devel
              • 在 Mac OS 上 brew install geos
              【解决方案8】:

              在 Fedora 上安装 geos 和 geos-devel

              sudo yum install geos geos-devel
              

              【讨论】:

                【解决方案9】:

                我遇到了同样的问题,要解决它,你需要将 lib 路径添加到 ld.so.conf 文件中。

                为此,打开文件:

                sudo vi /etc/ld.so.conf
                

                添加这一行

                /usr/local/lib
                

                然后

                sudo /sbin/ldconfig
                

                【讨论】:

                  【解决方案10】:

                  如果您像我一样使用 Anaconda 并遇到此问题,请将 libgeos* 文件从 /usr/lib 复制到 anaconda/lib 目录,然后重试... :) 希望这可以拯救其他人,因为我有花了几个小时。

                  【讨论】:

                  • 您还记得您需要采取的任何其他步骤吗?我首先通过 brew 安装它,然后按照您的建议将文件复制到 anaconda lib 文件夹,但是当我尝试运行我的脚本时,我仍然收到OSError: Could not find lib geos_c or load any of its variants ['/Library/Frameworks/GEOS.framework/Versions/Current/GEOS', '/opt/local/lib/libgeos_c.dylib'].。奇怪的是,通过 brew 安装它足以让 pip 开始工作。
                  • 我在 Ubuntu 16 上使用 Anaconda 并且有类似的错误,即使之前安装了 libgeos-dev。对我的修复是conda install geos,之后,在我的 conda 环境中 pip install 工作正常。
                  【解决方案11】:

                  身材匀称loads geos via ctypes

                  在你的 python 中试试这个,看看你是否得到了什么:

                  from ctypes.util import find_library
                  find_library('geos_c')
                  

                  如果它不起作用,那么您的 geos 安装可能是一团糟。根据this,您的地理位置应该在/usr/lib/libgeos_c.so.1。你的图书馆真的在那里吗?

                  【讨论】:

                  • 没有结果意味着python没有找到库(它返回None)。在 linux 上,python 使用/sbin/ldconfig -p 来查找库(您可以运行该命令并查找 libgeos)。我猜您的 geos RPM 缺少依赖项或未正确安装。
                  • 我遇到了同样的问题。我跑了from ctypes.util import find_library find_library('geos_c') 它返回了'libgeos_c.so.1' 所以它看起来就在那里......
                  • 对我来说,它返回的内容类似于:C:\Anaconda3\envs\my_env\Library\bin\geos_c.dll。正如我所观察到的,libgeos_c.so.1 没有出现在 bin 目录中,只有这个“dll”文件。
                  猜你喜欢
                  • 2019-11-10
                  • 1970-01-01
                  • 2021-02-25
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-08-04
                  • 2016-11-22
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多