Je suis accro à l'installation d'un nouveau pyproj (ver2.1 ou supérieur) avec Docker avec la version docker de Jetson Nano, alors prenez-en note. pyproj est un outil très utile que vous pouvez utiliser pour transformer votre système géodésique. (cf.) Mes posts passés
Jusqu'à présent, j'écrivais `` pyproj == 2.6.1.post1 '' dans requirex.txt pour pip3. Il a fonctionné sur WSL1 (ubuntu18.04) pour les ordinateurs portables et l'image Docker (base ubuntu18.04) pour CI / CD sur Google Cloud Platform. J'ai essayé de faire la même chose avec Jetson Nano (Jetpak4.4? Ubuntu18.04) ou docker pour raspberry pi4, mais cela n'a pas fonctionné avec ce requirements.txt, probablement parce que le processeur est différent de ARMv8.
Le stabilisateur de pyproj semble être 2.6.1 maintenant (07/10/2020). http://pyproj4.github.io/pyproj/stable/
Comme vous pouvez le voir ici, PROJ doit avoir la version 6.2.0 ou supérieure installée. Le problème était que je n'ai pas pu installer une nouvelle bibliothèque appelée PROJ utilisée par pyproj.
(cf.) PROJ (https://proj.org/)
Si vous souhaitez simplement installer PROJ et libproj.a, vous pouvez le faire ci-dessous. En fait, il est écrit dans les Instructions d'installation de la famille principale.
$ sudo apt install proj-bin
$ sudo apt install libproj-dev
Cependant, le problème est que même si vous faites cela, seuls les anciens seront inclus.
$ 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)
Même dans cet état, si `` `pyproj == 1.9.6``` et pyproj sont également anciens, l'installation de pip3 peut être effectuée. Cependant, mon code utilisait l'API de pyproj> = 2.1. Je ne veux pas réécrire le code, j'ai donc décidé de faire de mon mieux pour installer pyproj.
Après tout, j'ai construit la dernière version de PROJ à partir des sources, je l'ai installée, puis pip3 pour obtenir pyproj == 2.6.1.post1. C'est l'installation de PROJ, mais c'est plutôt bien.
Le point est --Installez les bibliothèques requises pour PROJ avant de construire --libproj.a sera installé dans / usr / local / lib, donc incluez-le dans votre LD_LIBRARY_PATH. Dans mon environnement, cette variable était vide.
$ 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
Le nouveau est arrivé sain et sauf.
$ 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)
Comme vous pouvez le voir en exécutant pip3, vous devez définir une variable d'environnement appelée PROJ_DIR. J'étais OK ci-dessous. Cela semblait faire référence à $ PROJ_DIR / lib / libproj.a '' et
$ PROJ_DIR / bin / proj ''.
$ export PROJ_DIR=/usr/local/
$ pip3 install pyproj==2.6.1.post1
J'ai écrit ce contenu dans un Dockerfile et le docker a été construit avec succès. la construction de docker a pris du temps. Construire à partir de la source est difficile.
Il y avait beaucoup de dépendances sur la construction de PROJ et l'installation de pyproj, mais j'aurais peut-être dû faire référence au Dockerfile dans le source pyproj. Est-ce vraiment de nos jours de distribuer avec docker?
Le https://github.com/OSGeo/PROJ/blob/master/Dockerfile contient les éléments suivants:
Souhaitez-vous cloner pyproj depuis github et le construire directement? (https://github.com/pyproj4/pyproj)
Donc, j'ai réussi à atteindre mon objectif (en utilisant pyproj dans docker build / run sur ARMv8). Il n'y a pas de TODO en particulier, mais je suis sûr que ce sera un monde heureux dans lequel apt et pip entreront facilement dans le futur. Je suis désolé pour cette application, mais pour le moment, c'est tout pour aujourd'hui.
Recommended Posts