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

问题描述 投票:0回答:13

我在 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
13个回答
173
投票

使用pip安装shapely,也遇到同样的问题。所以我继续像这样安装它:

sudo apt-get install libgeos-dev

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

sudo yum install geos-devel

在 MACOS 上您可以运行:

brew install geos

9
投票

设置

LD_LIBRARY_PATH
,然后运行python

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

python mytest.py

7
投票

我使用的是 Linux (Red Hat),我收到此错误:

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,您的地理位置应该位于

/usr/lib/libgeos_c.so.1
。你的图书馆真的在那里吗?


5
投票

在 ubuntu 中,以下命令应该可以解决这个问题。 这一切都归结为以下软件包。

(2017 年原版)

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 目录,然后重试...:) 希望这可以拯救其他人,因为我已经花了几个小时关于这一点。


2
投票
brew install geos

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


1
投票

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

pip install geos

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

检查 Virtualenv 环境 -> 基础解释器是否指向 python.exe 所在的正确位置

系统解释器->解释器也是如此 还有 Pipenv 环境 -> 基础解释器

确保所有内容都指向正确的路径。我遇到了这个问题,因为我有多个 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。

来源


0
投票

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

为此,请打开文件:

sudo vi /etc/ld.so.conf

添加此行

/usr/local/lib

然后

sudo /sbin/ldconfig

0
投票

我在alpine linux中遇到了这个问题,并按如下方式安装了geos和开发库

apk add geos geos-dev

-1
投票

如果你有

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
© www.soinside.com 2019 - 2024. All rights reserved.