找不到geos_c库或其任何变体的加载

113

我在 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。

我该怎么做来解决这个问题?


对于Centos7,请参见:https://dev59.com/DZ7ha4cB1Zd3GeqPqu7U yum install geos-devel - Deo Leung
12个回答

169

使用pip安装了shapely,但遇到了同样的问题。于是我这样安装它:

sudo apt-get install libgeos-dev

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

sudo yum install geos-devel

在MACOS上,您可以运行:

brew install geos

2
在 Fedora 上,应该使用 sudo yum install geos-devel 命令进行安装。 - kadee
27
在 macOS 上安装 GEOS,可以使用命令 brew install geos - Otieno Rowland
如果在ARM架构上安装,例如AWS Graviton2实例(例如t4g实例),您可能需要sudo yum install geos.aarch64 geos-devel.aarch64 - ChristopherTull
谢谢,我的好朋友!!! 这拯救了我的生命,并解决了我在安装poetry和lib shapely时遇到的问题。 - Bruno Lemos

9

设置LD_LIBRARY_PATH,然后运行Python。

export LD_LIBRARY_PATH=/path_to/geos/lib:$LD_LIBRARY_PATH

python mytest.py

7

我正在使用Linux(红帽)并遇到了这个错误:

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

适用于我的方法:

conda install geos

5

Shapely 使用ctypes加载地理信息

在您的Python中尝试此操作,看看是否会得到任何结果:

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

如果不起作用,那么你的geos安装可能出了问题。根据this,你的geos应该在/usr/lib/libgeos_c.so.1中。你的库是否真的存在?

没有结果意味着Python没有找到该库(它返回了“None”)。在Linux上,Python使用“/sbin/ldconfig -p”来查找库(您可以运行该命令并查找libgeos)。我猜测您的geos RPM缺少依赖项或未正确安装。 - Seth
3
我遇到了同样的问题。我运行了以下代码:from ctypes.util import find_library find_library('geos_c') 它返回了 'libgeos_c.so.1',所以看起来已经存在了…… - bsf10
对我来说,它返回了这样的东西:C:\Anaconda3\envs\my_env\Library\bin\geos_c.dll。据我观察,bin目录中没有libgeos_c.so.1文件,只有这个“dll”文件。 - Philipe Riskalla Leal

5
在Ubuntu中,以下命令应该可以解决问题。这一切都归结于以下软件包。
sudo apt-get install libgeos-c1 libgeos-3.4.2

编辑:(2020年更新版本)

sudo apt-get install libgeos-c1v5 libgeos-3.7.1

3
在 Fedora 上安装 geos 和 geos-devel。
sudo yum install geos geos-devel

2
如果您像我一样使用Anaconda,并遇到此问题,请将libgeos*文件从/usr/lib复制到anaconda/lib目录,然后再次尝试... :) 希望这能帮助其他人,因为我已经花了几个小时来解决这个问题。

1
你还记得需要采取哪些其他步骤吗?我首先通过 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 开始工作。 - Bani
2
我在Ubuntu 16上使用Anaconda时遇到了类似的错误,即使之前已经安装了libgeos-dev。对我来说解决方法是conda install geos,然后在我的conda环境中pip install shapely就可以正常工作了。 - svohara

2
brew install geos

仅通过此安装,我的问题得到了解决。


1

我在 Jupyter Notebook 上没有问题,但当我使用 PyCharm 时遇到了这个问题。尝试了多种方法(在机器上安装 Windows),下面的故障排除步骤解决了该问题。

pip install geos

Go to PyCharm, File->Settings->Project->Project Interpreter (检查您的python.exe文件所在的正确路径)->Add enter image description here。 检查Virtualenv环境,Base Interpreter指向您拥有python.exe的正确位置。 同样适用于System Interpreter->Interpreter,以及Pipenv Environment->Base Interpreter。

enter image description here

请确保所有路径都指向正确的位置。我遇到了这个问题,因为我有多个IDE,因此有多个目录可以找到python.exe。它们指向了错误的目录。
在故障排除期间,我还卸载并重新安装了conda install shapely,因为我从PyCharm指向Anaconda目录。希望这能有所帮助。
下面的链接也很有帮助https://www.jetbrains.com/help/pycharm/installing-uninstalling-and-upgrading-packages.html#conda-package-manager

1

在安装geos之后,我仍然遇到了问题。对我有用的解决方法(在macOS 13.1上)是:

sudo kmdir /opt/local
sudo ln -s /opt/homebrew/lib /opt/local/lib

让Shapely在其愿意查找的位置之一找到libgeos_c.dylib。
来源: 链接

1
这个问题可能有更好的解决办法,但现在这个方法也能够起作用。 - Eric

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