pyproj를 Jetson/RasPi에 설치

Docker에서 pyproj의 새로운 (ver2.1 이상)을 Jetson Nano의 docker build로 설치하는 데 빠졌기 때문에 메모합니다.
pyproj는 측지 시스템을 변환하는 데 사용할 수있는 매우 유용한 도구입니다.
(cf.) 지난 자신의 게시물
- 【python】WGS84에서 평면 직각 좌표계로의 변환

배경



무엇이 어려웠습니까?



지금까지 pip3 하는 requirementx.txt 에 pyproj==2.6.1.post1 를 써서 사용하고 있었습니다. 노트북 PC의 WSL1 (ubuntu18.04)과 Google Cloud Platform CI/CD의 Docker image (ubuntu18.04 base)에서 작동했습니다. 동일한 작업을 Jetson Nano (Jetpak4.4? ubuntu18.04) 또는 raspberry pi4 docker로 수행하려고 시도했지만 CPU가 ARMv8과 다르기 때문에이 requirements.txt에서는 작동하지 않았습니다.

PROJ 버전



pyproj의 안정판은 현재(2020/10/07)에서는 2.6.1과 같습니다.
htp // pyp 여과 j4. 기주 b. 이오 / pyp j / s 타 b /



여기에서 볼 수 있듯이 PROJ는 6.2.0 이상을 설치해야합니다. 문제는 pyproj가 사용하는 PROJ라는 새 라이브러리를 설치할 수 없다는 것입니다.
(cf.) PROJ (https://proj.org/)


PROJ와 libproj.a 만 설치하면 다음과 같습니다.
실제로, 본가의 설치 설명에 쓰여져 있습니다.
$ sudo apt install proj-bin
$ sudo apt install libproj-dev

그러나 이것을 실행해도 오래된 것 밖에 들어가지 않는 것이 문제.
$ proj
Rel. 4.9.3, 15 August 2016
usage: proj [ -bCeEfiIlormsStTvVwW [args] ] [ +opts[=arg] ] [ files ]

$  ldd `which proj` | grep libproj
        libproj.so.12 => /usr/lib/x86_64-linux-gnu/libproj.so.12 (0x00007f2adad70000)

이 상태에서도 pyproj == 1.9.6 와 pyproj도 오래된 것으로 하면 pip3 install 할 수 있었습니다. 그러나 내가 작성한 코드는 pyproj> = 2.1의 API를 사용했습니다. 코드를 다시 쓰고 싶지 않으므로 열심히 pyproj를 설치하기로 결정했습니다.

설치 방법



결국, PROJ의 최신판을 소스로부터 build 하고 install 하고, 그 후 pip3 하면 pyproj==2.6.1.post1 가 들어갔습니다. 이 PROJ의 설치이지만 비교적 빠졌습니다.

PROJ 설치



포인트는
- PROJ에 필요한 라이브러리를 빌드하기 전에 설치
- libproj.a 는/usr/local/lib 에 install 되므로, 여기를 LD_LIBRARY_PATH 에 포함해 두는 것. 자신의 환경에서이 변수는 비어있었습니다.
$ apt install -y \
  zlib1g-dev libsqlite3-dev pkg-config sqlite3 libcurl4-gnutls-dev libtiff5-dev 
$ wget https://download.osgeo.org/proj/proj-7.1.1.tar.gz
$ tar zxvf proj-7.1.1.tar.gz
# cd proj-7.1.1 && ./configure && make && make install
$ export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH

무사히 새로운 것이 들어갔다.
$ proj
Rel. 7.0.1, May 1st, 2020
usage: proj [-bdeEfiIlmorsStTvVwW [args]] [+opt[=arg] ...] [file ...]
$ ldd `which proj` | grep libproj
        libproj.so.19 => /usr/local/lib/libproj.so.19 (0x0000007fad95b000)

pyproj 설치



pip3를 실행하면 알 수 있지만 PROJ_DIR이라는 환경 변수를 설정해야합니다. 나는 아래에서 OK였다. $PROJ_DIR/lib/libproj.a 이나 $PROJ_DIR/bin/proj 를 참조하고 있는 것 같습니다.
$ export PROJ_DIR=/usr/local/
$ pip3 install pyproj==2.6.1.post1

이 내용을 Dockerfile에 쓰고 무사히 docker build 할 수 있었습니다. docker build에는 시간이 걸렸습니다. 소스에서 build는 어렵습니다.

나중에 깨달은 분명 편할지도 모르는 방법



PROJ의 빌드나 pyproj의 인스톨에는 의존관계에 여러 가지가 있었습니다만, pyproj의 소스에 있는 Dockerfile 를 참고로 하면 좋았을지도. 실은 docker로 배포하는 것이 지금 어떻습니까?

htps : // 기주 b. 코 m/오 게오/P로 J/bぉb/마s테 r/도 c케 r후우 에는 다음과 같이 있습니다.


pyproj도 github에서 clone하여 직접 빌드 해 보겠습니까? ( htps : // 기주 b. 이 m/pyp j4/pyp j )



그래서 무사히 목적 (ARMv8 에서의 docker build/run 으로 pyproj 를 이용)는 할 수 있었습니다. 특히 TODO는 없습니다만, 분명 장래 apt나 pip로 간단하게 들어가게 되는 행복한 세상에 되어 있는 것임에 틀림없다,,,, 라고 생각합니다. 다른 힘 본원입니다 죄송합니다만, 우선 오늘은 여기까지입니다.

좋은 웹페이지 즐겨찾기