Python can't import shapely

独自空忆成欢 提交于 2019-12-01 11:53:57

问题


I am using Python3.4 on Mac OSX and I am trying to import shapely. I am however unable to do so. Here is my traceback:

    from shapely.geometry import Point
  File "/Users/tc9/Library/Python/3.4/lib/python/site-packages/shapely/geometry/__init__.py", line 4, in <module>
    from .base import CAP_STYLE, JOIN_STYLE
  File "/Users/tc9/Library/Python/3.4/lib/python/site-packages/shapely/geometry/base.py", line 9, in <module>
    from shapely.coords import CoordinateSequence
  File "/Users/tc9/Library/Python/3.4/lib/python/site-packages/shapely/coords.py", line 8, in <module>
    from shapely.geos import lgeos
  File "/Users/tc9/Library/Python/3.4/lib/python/site-packages/shapely/geos.py", line 74, in <module>
    _lgeos = load_dll('geos_c', fallbacks=alt_paths)
  File "/Users/tc9/Library/Python/3.4/lib/python/site-packages/shapely/geos.py", line 53, in load_dll
    libname, fallbacks or []))
OSError: Could not find library geos_c or load any of its variants ['/Library/Frameworks/GEOS.framework/Versions/Current/GEOS', '/opt/local/lib/libgeos_c.dylib']

I think I might have to set the GEOS_LIBRARY_PATH, but I'm not sure what to set it to.

Here is an ls of /Users/tc9/homebrew/Cellar/geos/3.4.2/lib after I did brew install geos:

libgeos-3.4.2.dylib
libgeos.dylib
libgeos_c.a
libgeos.a
libgeos_c.1.dylib
libgeos_c.dylib

I edited and sourced my ~/.profile, but that didn't solve things:

GEOS_LIBRARY_PATH="/Users/tc9/homebrew/Cellar/geos/3.4.2"
export GEOS_LIBRARY_PATH

Can anybody point me in the direction of a solution for getting shapely to import? Thanks.


回答1:


You have set homebrew to install things in your home directory (well, the homebrew subdirectory in your home directory). That's ok, but you'll have to tell your system to find the installed libraries there. /opt/local/lib is commonly found automatically, but /Users/tc9/homebrew/lib won't.

So instead of setting GEOS_LIBRARY_PATH, try setting DYLD_LIBRARY_PATH as follows:

export DYLD_LIBRARY_PATH=/Users/tc9/homebrew/lib

You can do this on the command line first, and if it works, put it in your profile.

Note that I'm not using the Cellar subdirectory; you should see that as an archive for homebrew, but not as the actual files in use. For that, use /home/tc9/homebrew (with lib, bin etc appended). So for example, your PATH should also not include the Cellar directory.



来源:https://stackoverflow.com/questions/25761682/python-cant-import-shapely

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!