pyproj를 Jetson/RasPi에 설치
4450 단어 Proj.4dockerfile파이썬pyproj
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로 간단하게 들어가게 되는 행복한 세상에 되어 있는 것임에 틀림없다,,,, 라고 생각합니다. 다른 힘 본원입니다 죄송합니다만, 우선 오늘은 여기까지입니다.
Reference
이 문제에 관하여(pyproj를 Jetson/RasPi에 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/XPT60/items/be4e3d9f9f58d17cf968
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ 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)
결국, 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로 간단하게 들어가게 되는 행복한 세상에 되어 있는 것임에 틀림없다,,,, 라고 생각합니다. 다른 힘 본원입니다 죄송합니다만, 우선 오늘은 여기까지입니다.
Reference
이 문제에 관하여(pyproj를 Jetson/RasPi에 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/XPT60/items/be4e3d9f9f58d17cf968
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(pyproj를 Jetson/RasPi에 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/XPT60/items/be4e3d9f9f58d17cf968텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)