Deutsch

How To: Einrichten eines lokalen Conda-Kanals zur Installation der ArcGIS Python API

Zusammenfassung

Die ArcGIS Python API wird über Conda vertrieben – einem beliebten Paket- und Umgebungsmanagementsystem for Python-Entwickler. Die empfohlene Methode zur Installation dieser API ist im Handbuch zur ArcGIS Python API beschrieben. Kunden, die die API auf nicht in einem Netzwerk befindlichen Computern oder auf Workstations in einem isolierten Netzwerk installieren möchten, finden die entsprechenden Installationsanweisungen im Abschnitt zur Offline-Installation des Handbuchs.

Fortgeschrittene Benutzer, die die API in nicht verbundenen Umgebungen über Miniconda nutzen möchten (das heißt, über die Python-Eingabeaufforderung von ArcGIS Pro, die von Miniconda zur Verfügung gestellt wird), erstellen am besten einen lokalen Conda-Kanal und installieren die API über diesen Kanal. Der lokale Kanal umfasst bestimmte Abhängigkeiten, die die API erfordert. Die Benutzer können eine beliebige Anzahl an zusätzlichen Phyton-Paketen in diesem Kanal herunterladen und hosten.

In diesem Artikel werden die Schritte zum Erstellen eines Conda-Offlinekanals für die ArcGIS Python API beschrieben. Dafür ist ein Computer mit Internetverbindung erforderlich, auf dem Anaconda und eine Python 3.5-Shell mit dem Paket requests installiert ist.

Vorgehensweise

Zu diesem Knowledge-Base-Artikel gehören die zwei Dateien arcgis_v1_dependencies (eine Textdatei mit den Abhängigkeiten für die ArcGIS Python API) und download_dependencies (ein Python-Skript zum Herunterladen von Abhängigkeiten aus dem Anaconda-Kanal). Laden Sie diese unterstützenden Dateien herunter, bevor Sie die unten beschriebenen Schritte ausführen.

  • arcgis_v1_dependencies.txt
  • download_dependencies.py

Einrichten einer Umgebung zum Ausführen des heruntergeladenen Python-Skriptes

Installieren Sie Anaconda. Führen Sie folgende Befehle in Ihrem Terminal in der Root-Umgebung aus, um die erforderlichen Pakete conda-build und requests zu installieren:
$ conda install conda-build
$ conda install requests
Die neue Umgebung ist nun aktiv und bereit.
 

Herunterladen von Abhängigkeiten

Laden Sie das Python-Skript und die Textdatei an denselben Speicherort herunter. Führen Sie dann das Skript "download_dependencies.py" wie unten gezeigt aus:
$ python download_dependencies.py
Über das Skript werden alle Abhängigkeiten vom Onlinekanal anaconda.org heruntergeladen und lokal gespeichert. Die Ausgabe des Skriptes sieht ungefähr so aus:
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
....
Während des Herunterladens werden Ordner mit folgender Struktur erstellt:
\\channel_root\
  \linux-64
  \linux-32
  \osx-64
  \osx-32
  \win-64
  \win-32
  \noarch


Indizieren des lokalen Conda-Kanals

Nach Abschluss des Skriptes muss Conda diesen Speicherort indizieren. Conda erstellt die Manifest-Datei "repodata.json" in allen Ordnern, die die heruntergeladenen Pakete beschreibt. Dadurch kann Conda auf den Computern Ihrer Benutzer diesen Speicherort als lokalen Kanal behandeln und Pakete nicht im Internet, sondern in diesem Speicherort suchen und installieren.

Erstellen Sie den Index durch die Eingabe folgender Befehle:
$ 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
Die Ausgabe der Befehle sieht ungefähr so aus:
$ 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
  ....
Übertragen Sie den Root-Ordner nach dem Abschluss dieses Schrittes in einen Netzwerk-Speicherort oder auf einen Webserver, oder verwenden Sie ihn als lokalen Conda-Kanal.
 

Installieren über den lokalen Conda-Kanal

Installieren Sie Anaconda oder Miniconda auf dem nicht in ein Netzwerk eingebundenen Computer. Suchen Sie dann im lokalen Kanal nach den Paketen, um den Kanal zu testen:
$ conda search --channel file://path/to/channel --override-channels
Verwenden Sie z. B. auf einem Windows-Computer folgenden Befehl:
$ conda search --channel D:/code/arcgis_offline_downloads/channel --override-channels
Die Ausgabe des Befehls sieht ungefähr so aus:
$ 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
...
Da ArcGIS und alle zugehörigen Abhängigkeiten jetzt durchsuchbar sind, kann mit der Installation fortgefahren werden. Erstellen Sie eine neue Conda-Umgebung, oder installieren Sie in der Root-Umgebung das arcgis-Paket:
conda create --name awesome_arcgis python [Dieser Schritt ist optional.]
Installieren Sie jetzt ArcGIS über den Conda-Kanal:
activate awesome_arcgis
conda install --channel //offline/arcgis_channel/channel arcgis --offline --override-channels
Danach wird Folgendes ausgegeben, und die Installation wird fortgesetzt, nachdem der Benutzer zur Bestätigung des Vorgangs aufgefordert wurde:
$ 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:

The following packages will be downloaded:

      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
Ensure that ArcGIS is installed by running a Conda list:
$ 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
 ...


Testen der Offline-Installation

Wenn das ArcGIS-Paket in einer neuen Umgebung installiert wurde, aktivieren Sie es. Führen Sie dann in Ihrem Terminal den folgenden Befehl aus:
jupyter notebook
Dadurch wird eine neue Notebook-Umgebung im Browser gestartet. Starten Sie ein neues Notebook, und geben Sie Folgendes ein:
from arcgis.gis import GIS()
gis = GIS("portal url", "username", "password") #Verbindung zu ArcGIS Enterprise in Ihrem lokalen Netzwerk
gis.map()
Dadurch wird das Karten-Widget aufgerufen und die Standardgrundkarte geladen.
 

Tipps und Tricks

Betriebssystemabhängige Unterschiede
  • Je nach Betriebssystem, in dem dieses Skript ausgeführt wird, müssen die umgekehrten Schrägstriche möglicherweise durch Schrägstriche ersetzt werden (z. B. in einem Unix-basierten Betriebssystem wie Mac, Linux usw.).
  • Mit dem Python-Skript werden die Pakete für alle Betriebssystemarchitekturen heruntergeladen. Auch wenn die Zielcomputer unterschiedliche Betriebssysteme aufweisen, ist es daher nicht notwendig, den Download und die Indexerstellung mehrmals auszuführen. Machen Sie den Kanal für die Zielcomputer entweder über einen Webserver oder ein Netzlaufwerk verfügbar, oder kopieren Sie ihn auf diese Computer und installieren ihn dann von diesem Speicherort.


Erstellen eines Archivs

Wenn Sie den Kanal zur späteren Verwendung oder zur Aufbewahrung archivieren möchten, können Sie den Kanalordner auf Root-Ebene und alle Unterordner in eine .tar-Datei komprimieren. Verwenden Sie dazu die folgenden Befehle. Verwenden Sie unter Windows die PowerShell als Terminal zum Ausführen dieser Befehle:
$ tar -zcvf arcgis_v1_offline_channel.tar.gz path/to/channel/
Die Ausgabe ähnelt der folgenden:
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
....
Um dieses Archiv später zu entpacken, nutzen Sie folgenden Befehl:
$ tar -zxcf arcgis_v1_offline_channel.tar.gz -C ./arcgis_channel

Referenzinformationen