cartopyがライブラリエラーで動かず、更新したらgeosがセグフォして苦労した件
背景
先日、伊豆にサイクリングに行って来たので、サイコンデータから動画を作る自作のPythonスクリプトを動かしたら、エラーで動かない!
python ../cycmap.py Traceback (most recent call last): File "../cycmap.py", line 4, in <module> import cartopy.crs as ccrs File "/Users/junichi/.pyenv/versions/3.7.7/lib/python3.7/site-packages/cartopy/__init__.py", line 96, in <module> import cartopy.crs File "/Users/junichi/.pyenv/versions/3.7.7/lib/python3.7/site-packages/cartopy/crs.py", line 36, in <module> from cartopy._crs import (CRS, Geodetic, Globe, PROJ4_VERSION, ImportError: dlopen(/Users/junichi/.pyenv/versions/3.7.7/lib/python3.7/site-packages/cartopy/_crs.cpython-37m-darwin.so, 0x0002): Library not loaded: '/usr/local/opt/proj/lib/libproj.19.dylib' Referenced from: '/Users/junichi/.pyenv/versions/3.7.7/lib/python3.7/site-packages/cartopy/_crs.cpython-37m-darwin.so' Reason: tried: '/usr/local/opt/proj/lib/libproj.19.dylib' (no such file), '/usr/local/lib/libproj.19.dylib' (no such file), '/usr/lib/libproj.19.dylib' (no such file), '/usr/local/Cellar/proj/9.0.1/lib/libproj.19.dylib' (no such file), '/usr/local/lib/libproj.19.dylib' (no such file), '/usr/lib/libproj.19.dylib' (no such file)
projとgeosをHomebrewで最新化したら、セグフォ!
otoolで無理やり、.dylibファイルの参照を変更する方法を真っ先に思いつくも、otoolコマンドも久しく使ってないからオプションや指定方法を調べるのも面倒くさそう。
ひとまず、caropyが依存しているライブラリをhomebrewで最新化して試したが、libgeosでセグフォ
原因
pyenv環境なので、HOME配下に複数のlibgeosが入った状態になっており、これが原因。
解決方法
Homebrewで入れたgeosを参照するように、cartopyが内部的に使用しているshapelyを再インストールして、以下のようにソースからビルドするオプションをpipで指定する。
pip uninstall shapely pip install --no-binary shapely shapely
関連記事
- XPERIA SO-01Bで非アプリで現在地を取得するには - non vorrei lavorare
- ffmpegで静止画からQuickTime Playerで再生できる動画を作る - non vorrei lavorare
- 自走で都民の森まで行ったサイコンのログをcartopyに流したら「OSError: Could not find lib c or load any of its variants [].」 - non vorrei lavorare