Shapely OSError:无法找到lib c或加载其任何变体[]

时间:2016-10-12 06:22:32

标签: python shapely shapely.geometry

我只是想尝试使用演示代码。我在Jupyter Notebook中运行以下命令:

from shapely.geometry import shape

这给了我以下内容:

OSError                                   Traceback (most recent call last)
<ipython-input-4-cf5b4d0962ea> in <module>()
----> 1 from shapely.geometry import shape

/Users/hkwik/anaconda/lib/python2.7/site-packages/shapely/geometry/__init__.py in <module>()
      2 """
      3 
----> 4 from .base import CAP_STYLE, JOIN_STYLE
      5 from .geo import box, shape, asShape, mapping
      6 from .point import Point, asPoint

/Users/hkwik/anaconda/lib/python2.7/site-packages/shapely/geometry/base.py in <module>()
      7 from ctypes import pointer, c_size_t, c_char_p, c_void_p
      8 
----> 9 from shapely.coords import CoordinateSequence
     10 from shapely.ftools import wraps
     11 from shapely.geos import lgeos, ReadingError

/Users/hkwik/anaconda/lib/python2.7/site-packages/shapely/coords.py in <module>()
      6 from ctypes import byref, c_double, c_uint
      7 
----> 8 from shapely.geos import lgeos
      9 from shapely.topology import Validating
     10 

/Users/hkwik/anaconda/lib/python2.7/site-packages/shapely/geos.py in <module>()
     81         _lgeos = load_dll('geos_c', fallbacks=alt_paths)
     82 
---> 83     free = load_dll('c').free
     84     free.argtypes = [c_void_p]
     85     free.restype = None

/Users/hkwik/anaconda/lib/python2.7/site-packages/shapely/geos.py in load_dll(libname, fallbacks, mode)
     59         raise OSError(
     60             "Could not find lib {0} or load any of its variants {1}.".format(
---> 61                 libname, fallbacks or []))
     62 
     63 _lgeos = None

OSError: Could not find lib c or load any of its variants [].

但是,如果我从翻译中跑出来,一切都很好。

知道发生了什么事吗?

8 个答案:

答案 0 :(得分:7)

我只是卸载了Shapely,然后重新安装以解决此问题。

Sales

答案 1 :(得分:3)

您可以尝试重置环境变量DYLD_FALLBACK_LIBRARY_PATH

export DYLD_FALLBACK_LIBRARY_PATH=$(HOME)/lib:/usr/local/lib:/lib:/usr/lib

Source

答案 2 :(得分:0)

我修复它的方式:

apk add geos libc-dev musl-dev
pip install Shapely

答案 3 :(得分:0)

@ user2977865和@anothernode的方法是正确的,但可能不适用于每个人。 默认情况下,shapely将在DYLD_PATH中查找库。

我将其设置为DYLD_LIBRARY_PATH=/usr/local/lib/:/usr/local/mysql/lib/

但是这些库位于/usr/lib中。

所以我必须对其进行如下修改:

export DYLD_LIBRARY_PATH=/usr/lib/:/usr/local/mysql/lib/

奖金注意:通过重新启动终端并清除您可能正在使用的所有IDE的缓存,确保已设置环境变量。

答案 4 :(得分:0)

对我来说,只有在从 shapely lib 安装 Shapely 并从 Anaconda Prompt 执行以下命令后才能工作:

pip install Shapely-1.7.1-cp37-cp37m-win_amd64.whl --force-reinstall

这会强制重新安装 shapely。

答案 5 :(得分:0)

我在 aws lambda 中运行代码时遇到了一个非常类似的问题,并显示错误消息:

 OSError: Could not find lib c or load any of its variants ['libc.musl-x86_64.so.1'].

我在容器安装中添加了 musl-dev 并调整了符号链接:

ln -s /usr/lib/x86_64-linux-musl/libc.so /lib/libc.musl-x86_64.so.1

答案 6 :(得分:0)

我不得不执行 conda update --all 来解决这个问题。

答案 7 :(得分:0)

试试这个可能对你有帮助:

pip install --upgrade --force-reinstall shapely