Ich bin süchtig danach, ein neues Pyproj (Version 2.1 oder höher) mit Docker mit Jetson Nanos Docker-Build zu installieren. Notieren Sie es sich also. pyproj ist ein sehr nützliches Werkzeug, mit dem Sie Ihr geodätisches System transformieren können. (vgl.) Meine früheren Beiträge
Bisher habe ich `` `pyproj == 2.6.1.post1``` in requirex.txt für pip3 geschrieben. Es funktionierte auf WSL1 (ubuntu18.04) für Notebooks und Docker-Image (ubuntu18.04 base) für CI / CD auf Google Cloud Platform. Ich habe versucht, dasselbe mit Jetson Nano (Jetpak4.4? Ubuntu18.04) oder Docker für Himbeer-Pi4 zu tun, aber es funktionierte nicht mit dieser Anforderung.txt, wahrscheinlich weil sich die CPU von ARMv8 unterscheidet.
Der Stabilisator von Pyproj scheint jetzt 2.6.1 zu sein (2020/10/07). http://pyproj4.github.io/pyproj/stable/
Wie Sie hier sehen können, muss auf PROJ 6.2.0 oder höher installiert sein. Das Problem war, dass ich keine neue Bibliothek namens PROJ installieren konnte, die von pyproj verwendet wurde.
(cf.) PROJ (https://proj.org/)
Wenn Sie nur PROJ und libproj.a installieren möchten, können Sie dies unten tun. Tatsächlich ist es in den Installationsanweisungen der head-Familie geschrieben.
$ sudo apt install proj-bin
$ sudo apt install libproj-dev
Das Problem ist jedoch, dass selbst wenn Sie dies tun, nur die alten enthalten sind.
$ 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)
Selbst in diesem Zustand kann die Installation von pip3 durchgeführt werden, wenn `` `pyproj == 1.9.6``` und pyproj ebenfalls alt sind. Mein Code verwendete jedoch die API von pyproj> = 2.1. Ich möchte den Code nicht umschreiben, deshalb habe ich beschlossen, mein Bestes zu geben, um pyproj zu installieren.
Immerhin habe ich die neueste Version von PROJ aus dem Quellcode erstellt, installiert und dann pip3, um pyproj == 2.6.1.post1 zu erhalten. Dies ist die Installation von PROJ, aber es ist ziemlich gut.
Der Punkt ist
$ 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
Der neue ist sicher angekommen.
$ 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)
Wie Sie beim Ausführen von pip3 sehen können, müssen Sie eine Umgebungsvariable namens PROJ_DIR festlegen. Ich war unten in Ordnung. Es schien sich auf "$ PROJ_DIR / lib / libproj.a" und "$ PROJ_DIR / bin / proj" zu beziehen.
$ export PROJ_DIR=/usr/local/
$ pip3 install pyproj==2.6.1.post1
Ich habe diesen Inhalt in eine Docker-Datei geschrieben und erfolgreich Docker erstellt. Der Docker-Build hat lange gedauert. Aus der Quelle zu bauen ist schwer.
Es gab viele Abhängigkeiten beim Erstellen von PROJ und beim Installieren von pyproj, aber vielleicht hätte ich auf die Docker-Datei in der pyproj-Quelle verweisen sollen. Ist es heutzutage wirklich so, mit Docker zu verteilen?
Die https://github.com/OSGeo/PROJ/blob/master/Dockerfile enthält Folgendes:
Möchten Sie Pyproj von Github klonen und direkt erstellen? (https://github.com/pyproj4/pyproj)
Also habe ich mein Ziel erfolgreich erreicht (mit pyproj in Docker Build / Run auf ARMv8). Es gibt kein TODO im Besonderen, aber ich bin sicher, dass es eine glückliche Welt sein wird, die in Zukunft mit apt und pip leicht zu betreten sein wird. Es tut mir leid für diese Anwendung, aber vorerst ist das alles für heute.
Recommended Posts