오늘은 M1 Mac에 basemap을 설치해보겠습니다
원래는 tensorflow 설치 포스팅이 먼저와야 맞지만 이 에러가 해결이 되지 않다가 갑자기 해결되서 까먹기 전에 올리려구 합니다
0. 문제 발생
아마 완성되면 포스팅이 올라갈거지만 현재 다양한 라이브러리들과 tkinter를 이용해서
netcdf 시각화 툴을 만들어보는 중입니다
하지만 시각화하는 부분을 만드는 과정에서 에러가 발생하더군요
No module named 'mpl_toolkits.basemap'
그런데 저는 설치를 했는데도 이런 에러가 발생한겁니다
아나콘다 공식 홈페이지에 나와있는 코드를 입력해서 설치했습니다
conda install -c anaconda basemap
혹시 콘다로 설치한 basemap이 작동하지 않는건가 해서 pip install로 해봤는데
다른 에러가 발생했습니다
#warning "Using deprecated NumPy API, disable it with "\
^
src/_geoslib.c:751:10 fatal error: 'geos_c.h' file not found
#include "geos_c.h"
^
1 warning 1 error generated
error: command '/usr/bin/clang' failed with exit code 1
[end of output]
note: Thist error originates from a subprocess, and is likely not a problem with pip
ERROR: Failed building wheel for basemap
Failed to build basemap
ERROR: Could not build wheels for basemap, which is required to install pyproject.toml-based projects
geos_c.h가 없기 때문에 basemap을 빌드할 수 없다는 에러였습니다
하지만 geos_c.h를 계속 찾을 수 없다고 하더군요
(base) lsh@isuhyeons-Macbook-Air % which geos_c.h
geos_c.h not found
인터넷을 찾아보니 geos_c.h라는 파일은 geos 라이브러리 폴더 내에 존재한다고 합니다
brew install geos
brew install proj
필요한 라이브러리들을 brew로 설치했기 때문에 geos 폴더를 찾아가서 확인해봤습니다
(base) lsh@isuhyeons-MacBook-Air include % ls
geos geos.h geos_c.h
너무나도 편안하게 들어있는 모습입니다
파일 위치도 찾았으니까 문제를 해결해봅시다
1. 해결 방법
해결법은 생각보다 간단합니다
환경 변수 설정을 이용해서 geos_c.h를 연결해주면 됩니다
echo 'export GEOS_DIR=/opt/homebrew/Cellar/geos/3.12.0/' >> ~/.zshrc
source ~/.zshrc
이 부분은 homebrew 설치하는 글에서 보셔서 익숙하실 겁니다
파이썬을 리눅스 환경에서 사용할 경우 라이브러리 폴뎌를 기본적으로 /usr/local을 사용합니다
그렇기 때문에 geos 폴더도 /usr/geos/Cellar/geos로 찾아가서 geos_c.h를 찾게 되는거죠
하지먼 저희는 brew로 설치를 했기 때문에 /usr/local이 아닌 /opt/homebrew/Cellar에 geos가 있게 됩니다
그렇기 때문에 geos만 따로 선언해서 저 폴더에서 찾아오라고 환경변수를 선언해주면 됩니다
저 부분을 선언하고 다시 설치를 해보면
(base) lsh@isuhyeons-MacBook-Air coding % pip install basemap
Collecting basemap
Using cached basemap-1.3.8.zip (156 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting basemap-data<1.4,>=1.3.2 (from basemap)
Using cached basemap_data-1.3.2-py2.py3-none-any.whl (30.5 MB)
Collecting pyshp<2.4,>=1.2 (from basemap)
Using cached pyshp-2.3.1-py2.py3-none-any.whl (46 kB)
Requirement already satisfied: matplotlib<3.8,>=1.5 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from basemap) (3.7.2)
Collecting pyproj<3.7.0,>=1.9.3 (from basemap)
Using cached pyproj-3.6.0-cp311-cp311-macosx_11_0_arm64.whl (4.7 MB)
Requirement already satisfied: numpy<1.26,>=1.21 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from basemap) (1.25.2)
Requirement already satisfied: contourpy>=1.0.1 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (1.1.0)
Requirement already satisfied: cycler>=0.10 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (0.11.0)
Requirement already satisfied: fonttools>=4.22.0 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (4.42.1)
Requirement already satisfied: kiwisolver>=1.0.1 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (1.4.5)
Requirement already satisfied: packaging>=20.0 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (23.0)
Requirement already satisfied: pillow>=6.2.0 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (10.0.0)
Requirement already satisfied: pyparsing<3.1,>=2.3.1 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (3.0.9)
Requirement already satisfied: python-dateutil>=2.7 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from matplotlib<3.8,>=1.5->basemap) (2.8.2)
Requirement already satisfied: certifi in /Users/lsh/miniconda3/lib/python3.11/site-packages (from pyproj<3.7.0,>=1.9.3->basemap) (2023.5.7)
Requirement already satisfied: six>=1.5 in /Users/lsh/miniconda3/lib/python3.11/site-packages (from python-dateutil>=2.7->matplotlib<3.8,>=1.5->basemap) (1.16.0)
Building wheels for collected packages: basemap
Building wheel for basemap (pyproject.toml) ... done
Created wheel for basemap: filename=basemap-1.3.8-cp311-cp311-macosx_11_0_arm64.whl size=105270 sha256=5e350a82e7fca7002ba9365ff1df3f00fcf746dfab12994e80f419e6a1e9444d
Stored in directory: /Users/lsh/Library/Caches/pip/wheels/35/01/d2/b50c4b97217609a9b8b25cc06fb9bb9e5885bd00456ae26b1a
Successfully built basemap
Installing collected packages: pyshp, pyproj, basemap-data, basemap
Successfully installed basemap-1.3.8 basemap-data-1.3.2 pyproj-3.6.0 pyshp-2.3.1
아주 잘 설치가 됩니다
이렇게 basemap 설치를 해봤습니다
아마 wrf-python 라이브러리를 설치하는 과정에서도 똑같은 에러 구문이 나타났었는데
이 부분은 다시 시도해봐야겠습니다
'Mac' 카테고리의 다른 글
Mac M1 환경에서 ncl 실행 (M2 에러 해결 포함) (4) | 2024.04.28 |
---|---|
Mac : Too many open files 에러 해결 (0) | 2023.12.09 |
M1 Mac WRF_Python 라이브러리 설치하기 (2) | 2023.09.11 |
Homebrew 설치와 사용 (0) | 2023.09.10 |
내가 맥북 에어 M1을 산 이유 (0) | 2023.09.10 |