français

Procédure : configurer un canal Conda local pour installer l’API Python d’ArcGIS

Résumé

L’API Python d’ArcGIS est distribuée via Conda, un système de gestion de l’environnement et un paquetage apprécié des développeurs Python. Le Guide de l’API Python d’ArcGIS (disponible en anglais) indique la méthode d’installation recommandée. Les clients souhaitant installer cette API sur des ordinateurs non reliés en réseau ou sur des stations de travail appartenant à un réseau isolé, doivent se référer aux instructions d’installation de la section Offline install (Installation ligne) du guide.

Pour les utilisateurs expérimentés souhaitant utiliser l’API à partir de Miniconda (autrement dit, à partir de l’invite de commande Python d’ArcGIS Pro, hébergée par Miniconda) dans des environnements déconnectés, le mieux est de créer un canal Conda local sur site et d’installer l’API à partir de ce canal. Le canal local implique un nombre fini de dépendances exigées par l’API. Les utilisateurs peuvent décider de télécharger et d’héberger autant de paquetages Python supplémentaires qu’ils le souhaitent dans ce canal.

Cet article explique comment créer un canal Conda hors ligne pour l’API Python d’ArcGIS. Vous devez disposer d’une part, d’un ordinateur avec une connexion Internet et sur lequel Anaconda est installé et d’autre part, d’un environnement d’exécution Python 3.5 dans lequel le paquetage requests est installé.

Procédure

Cet article de la base de connaissance est accompagné de deux fichiers : arcgis_v1_dependencies (un fichier texte recensant les dépendances pour l’API Python d’ArcGIS) et download_dependencies (un script Python destiné à télécharger les dépendances à partir du canal anaconda). Téléchargez ces fichiers de prise en charge avant de commencer les étapes ci-dessous.

  • arcgis_v1_dependencies.txt
  • download_dependencies.py

Configuration d’un environnement pour exécuter le script Python de téléchargement

Installez Anaconda. Appliquez les commandes suivantes depuis votre terminal à l’environnement racine pour installer les paquetages conda-build et requests requis :
$ conda install conda-build
$ conda install requests
Le nouvel environnement est désormais actif et prêt.
 

Téléchargement des dépendances

Téléchargez le script Python et le fichier texte complémentaires au même emplacement. Exécutez ensuite le script download_dependencies.py associé comme illustré ci-dessous :
$ python download_dependencies.py
Le script a pour effet de télécharger toutes les dépendances du canal en ligne anaconda.org et de les stocker au niveau local. L’exécution du script produit une sortie similaire à celle-ci :
Using environment list file: .\ arcgis_v1_dependencies.txt
Getting  _nb_ext_conf-0.3.0-py35_0.tar.bz2
     Downloaded win-64\_nb_ext_conf-0.3.0-py35_0.tar.bz2
     Downloaded win-32\_nb_ext_conf-0.3.0-py35_0.tar.bz2
     Downloaded linux-64\_nb_ext_conf-0.3.0-py35_0.tar.bz2
     Downloaded linux-32\_nb_ext_conf-0.3.0-py35_0.tar.bz2
     Error with download: osx-32 : 
     Downloaded osx-64\_nb_ext_conf-0.3.0-py35_0.tar.bz2
Getting  anaconda-client-1.5.5-py35_0.tar.bz2
     Downloaded win-64\anaconda-client-1.5.5-py35_0.tar.bz2
     Downloaded win-32\anaconda-client-1.5.5-py35_0.tar.bz2
     Downloaded linux-64\anaconda-client-1.5.5-py35_0.tar.bz2
     Downloaded linux-32\anaconda-client-1.5.5-py35_0.tar.bz2
     Error with download: osx-32 : 
     Downloaded osx-64\anaconda-client-1.5.5-py35_0.tar.bz2
....
Au fur et à mesure du téléchargement, le script crée des dossiers au sein de la structure suivante :
\\channel_root\
  \linux-64
  \linux-32
  \osx-64
  \osx-32
  \win-64
  \win-32
  \noarch


Indexation du canal Conda local

Lorsque l’exécution du script est terminée, Conda doit indexer cet emplacement. Conda construit un fichier manifeste, repodata.json, dans chacun des dossiers correspondant aux paquetages présents. Cela permet au système Conda (sur les ordinateurs de vos utilisateurs) de traiter cet emplacement comme un canal local et de rechercher et installer les paquetages à partir de cet emplacement au lieu d’Internet.

Générez l’index en saisissant les commandes suivantes :
$ conda index \\path\to\channel\win-64
$ conda index \\path\to\channel\win-32
$ conda index \\path\to\channel\linux-64
$ conda index \\path\to\channel\linux-32
$ conda index \\path\to\channel\osx-64
$ conda index \\path\to\channel\osx-32
$ conda index \\path\to\channel\noarch
L’exécution des commandes produit une sortie similaire à celle-ci :
$ conda index \\path\to\channel\win-64
  updating index in: \\path\to\channel\win-64
  updating: pywin32-220-py35_1.tar.bz2
  updating: nb_conda_kernels-2.0.0-py35_0.tar.bz2
  updating: requests-2.12.1-py35_0.tar.bz2
  updating: pyzmq-16.0.2-py35_0.tar.bz2
  updating: _nb_ext_conf-0.3.0-py35_0.tar.bz2
  updating: ipywidgets-5.2.2-py35_0.tar.bz2
  updating: decorator-4.0.10-py35_0.tar.bz2
  ....
Une fois cette étape terminée, transférez le dossier racine sur un emplacement réseau ou un serveur web, ou utilisez-le localement en guise de canal Conda local.
 

Installation à partir du canal Conda local

Installez Anaconda ou Miniconda sur un ordinateur non connecté au réseau, Puis recherchez les paquetages sur le canal local pour vous assurer qu’il fonctionne :
$ conda search --channel file://path/to/channel --override-channels
Voici à quoi ressemblerait cette instruction sous Windows :
$ conda search --channel D:/code/arcgis_offline_downloads/channel --override-channels
La commande produit un résultat similaire à celui-ci :
$ conda search --channel file://offline/arcgis_channel/channel --override-channels
Fetching package metadata .....
_nb_ext_conf                 0.3.0                    py35_0  file://offline/arcgis_channel/channel
anaconda-client              1.5.5                    py35_0  file://offline/arcgis_channel/channel
arcgis                       0.9                      py35_1  file://offline/arcgis_channel/channel
clyent                       1.2.2                    py35_0  file://offline/arcgis_channel/channel
colorama                     0.3.7                    py35_0  file://offline/arcgis_channel/channel
decorator                    4.0.10                   py35_0  file://offline/arcgis_channel/channel
...
Etant donné qu’ArcGIS et toutes ses dépendances peuvent maintenant faire l’objet de recherches, l’installation peut être poursuivie. Créez un nouvel environnement Conda ou installez le paquetage arcgis sur l’environnement racine :
conda create --name awesome_arcgis python [cette étape est facultative]
Installez à présent ArcGIS à partir du canal Conda :
activate awesome_arcgis
conda install --channel //offline/arcgis_channel/channel arcgis --offline --override-channels
Cette commande produit la sortie suivante et poursuit l’installation après avoir demandé la confirmation de l’utilisateur :
$ conda install -c //offline/arcgis_channel/channel arcgis --offline --override-channels
Fetching package metadata .....
Solving package specifications: ..........

Package plan for installation in environment C:\Anaconda3\envs\awesome_arcgis:

Les paquetages suivants seront téléchargés :

      package                    |            build
      ---------------------------|-----------------
      colorama-0.3.7             |           py35_0          19 KB  file://offline/arcgis_channel/channel
      decorator-4.0.10           |           py35_0          12 KB  file://offline/arcgis_channel/channel
      ....

Proceed ([y]/n)? y
  ....
Enabling notebook extension arcgis/mapview...
      - Validating: ok
Assurez-vous qu’ArcGIS est installé en exécutant une commande de liste Conda :
$ conda list
  # packages in environment at C:\Anaconda3\envs\awesome_arcgis:
#
  arcgis                    0.9                      py35_1    file://offline/arcgis_channel/channel
  colorama                  0.3.7                    py35_0    file://offline/arcgis_channel/channel
  decorator                 4.0.10                   py35_0    file://offline/arcgis_channel/channel
 ...


Test de l’installation hors ligne

Si le paquetage ArcGIS a été installé dans un nouvel environnement, activez-le. Exécutez ensuite la commande suivante depuis votre terminal :
jupyter notebook
Cette commande a pour effet de démarrer un nouvel environnement Notebook dans le navigateur. Lancez un nouveau Notebook et saisissez ce qui suit :
from arcgis.gis import GIS()
gis = GIS("URL du portail", "nom d’utilisateur", "mot de passe") #se connecter à ArcGIS Enterprise dans votre réseau local
gis.map()
Ce script permet d’ouvrir le widget cartographique et de charger le fond de carte par défaut.
 

Conseils et astuces

Différences entre les systèmes d’exploitation
  • Selon le système d’exploitation qui exécute ce script, il peut être nécessaire de remplacer les barres obliques inverses par des barres obliques (sur un SE de type Unix, tel que Mac, Linux, etc.)
  • Le script Python télécharge les paquetages pour l’ensemble des architectures de système d’exploitation. Autrement dit, même si les ordinateurs de destination utilisent des systèmes d’exploitation différents, il n’est pas nécessaire de recommencer les étapes de téléchargement et de construction d’index. Mettez le canal à la disposition des machines de destination sur un serveur web ou un lecteur du réseau, ou en le copiant physiquement sur ces machines, puis en effectuant l’installation à partir de cet emplacement.


Création d’une archive

Si vous souhaitez archiver le canal à des fins d’utilisation ultérieure ou de stockage, il suffit de regrouper le dossier du canal au niveau racine avec tous ses sous-dossiers au sein d’un même fichier tar. Utilisez les commandes suivantes pour ce faire. Si vous travaillez sous Windows, utilisez le PowerShell comme terminal pour exécuter ces commandes :
$ tar -zcvf arcgis_v1_offline_channel.tar.gz path/to/channel/
Vous obtenez une sortie similaire à ce qui suit :
a channel
a channel/.DS_Store
a channel/linux-32
a channel/linux-64
a channel/osx-32
a channel/osx-64
a channel/win-32
a channel/win-64
a channel/win-64/.index.json
a channel/win-64/_nb_ext_conf-0.3.0-py35_0.tar.bz2
a channel/win-64/anaconda-client-1.5.5-py35_0.tar.bz2
a channel/win-64/arcgis-1.0-py35_1.tar.bz2
a channel/win-64/clyent-1.2.2-py35_0.tar.bz2
....
Pour décompacter cette archive en vue d’une utilisation ultérieure, exécutez la commande suivante :
$ tar -zxcf arcgis_v1_offline_channel.tar.gz -C ./arcgis_channel

Informations associées