我在 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 包,以及以下两个库:
我可以做什么来解决这个问题?
使用pip安装shapely,也遇到同样的问题。所以我继续像这样安装它:
sudo apt-get install libgeos-dev
它奏效了。我运行的是 Ubuntu,所以如果你使用的是 Fedora,你应该运行:
sudo yum install geos-devel
在 MACOS 上您可以运行:
brew install geos
设置
LD_LIBRARY_PATH
,然后运行python
export LD_LIBRARY_PATH=/path_to/geos/lib:$LD_LIBRARY_PATH
python mytest.py
我使用的是 Linux (Red Hat),我收到此错误:
OSError:/home/[user]/.conda/envs/ox/lib/libgeos_c.so:无法打开共享对象文件:没有这样的文件或目录
什么对我有用:
conda install geos
Shapely 通过 ctypes 加载地理信息。
在你的Python中试试这个,看看你是否得到了什么:
from ctypes.util import find_library
find_library('geos_c')
如果不起作用,那么您的 geos 安装可能会出现问题。根据 this,您的地理位置应该位于
/usr/lib/libgeos_c.so.1
。你的图书馆真的在那里吗?
在 ubuntu 中,以下命令应该可以解决这个问题。 这一切都归结为以下软件包。
(2017 年原版)
sudo apt-get install libgeos-c1 libgeos-3.4.2
编辑:(2020 年更新版本)
sudo apt-get install libgeos-c1v5 libgeos-3.7.1
在 Fedora 上安装 geos 和 geos-devel
sudo yum install geos geos-devel
如果你像我一样使用 Anaconda 并遇到了这个问题,请将 libgeos* 文件从 /usr/lib 复制到 anaconda/lib 目录,然后重试...:) 希望这可以拯救其他人,因为我已经花了几个小时关于这一点。
brew install geos
这个安装解决了我的问题。
我在 Jupyter Notebook 上没有问题,但当我使用 PyCharm 时遇到了这个问题。 在计算机上尝试了多种窗口操作,以下故障排除步骤解决了该问题
pip install geos
转到 PyCharm,文件 -> 设置 -> 项目 -> 项目解释器(检查你的 python.exe 文件所在的路径是否正确) -> 添加
检查 Virtualenv 环境 -> 基础解释器是否指向 python.exe 所在的正确位置
系统解释器->解释器也是如此 还有 Pipenv 环境 -> 基础解释器
确保所有内容都指向正确的路径。我遇到了这个问题,因为我有多个 IDE,因此有多个可用 python.exe 的目录。它们指向了错误的目录。
在故障排除过程中,我还卸载并重新安装了
conda install shapely
,因为我指向 PyCharm 中的 Anaconda 目录。希望有帮助。
安装 geos 后我仍然遇到问题。为我解决的问题(macOS 13.1)是
sudo kmdir /opt/local
sudo ln -s /opt/homebrew/lib /opt/local/lib
让 Shapely 在它愿意寻找的位置之一找到 libgeos_c.dylib。
我也遇到了同样的问题,为了解决这个问题,你需要将lib路径添加到ld.so.conf文件中。
为此,请打开文件:
sudo vi /etc/ld.so.conf
添加此行
/usr/local/lib
然后
sudo /sbin/ldconfig
我在alpine linux中遇到了这个问题,并按如下方式安装了geos和开发库
apk add geos geos-dev
如果你有
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