ArcGIS Server ermöglicht die Verwendung einer Python 3-Runtime für Befehlszeilen-ArcPy-Skripte. Ausgewählte Werkzeuge können jetzt mit einer Python 3.x-Runtime ausgeführt werden, die unabhängig von ArcGIS Server installiert wird.
Vorversion:
In früheren Versionen von ArcGIS Server unter Linux konnten Python-Skripte nur in einer Linux-Shell über die Python 2.7-Runtime ausgeführt werden, die in ArcGIS Server enthalten ist. Für diese Benutzeroberfläche galten Einschränkungen in Bezug auf das Verwenden von Drittanbieterbibliotheken und Arbeiten mit Pfaden.
Erste Schritte
Sie können zunächst die Python 3-Runtime für ArcGIS Server for Linux verwenden, indem Sie das arcgis-server-py3-Paket mit Conda herunterladen und installieren.
Python verfügt über ein umfassendes, reichhaltiges System von vorgefertigten Codepaketen, die in ArcGIS genutzt werden können; die Verwaltung der in einem System installierten Pakete kann jedoch eine komplexe und zeitaufwändige Aufgabe sein, insbesondere, wenn an mehreren Projekten gleichzeitig gearbeitet oder versucht wird, Code für andere Benutzer freizugeben.
Um diese Vielseitigkeit nutzbar zu machen, hat die Python-Community Methoden zum Erstellen von Projekten in mehreren Versionen von Python entwickelt und gleichzeitig den Installationsvorgang für nahezu alle öffentlich verfügbaren Python-Pakete vereinfacht. Der beliebteste und am weitesten verbreitete Python-Paket-Manager ist Conda. Durch die Integration von Conda in ArcGIS Server können Sie die Funktionen im reichhaltigen System von Open-Source- und Drittanbieterpaketen von Python in ArcGIS Server verwenden. Dadurch wird Ihnen die schnelle Installation, Ausführung und Aktualisierung von Paketen und deren Abhängigkeiten für die Verwendung in Ihrem Python-Code ermöglicht.
Conda kann bei Bedarf von der Anaconda-Website heruntergeladen werden.
Um auf ArcGIS Python-Funktionen, einschließlich ArcPy, zuzugreifen, kann das arcgis-server-py3-Paket direkt über Conda installiert werden. Verwenden Sie in einer Conda-Umgebung den folgenden Befehl:
conda install -c esri arcgis-server-py3=<version>
Der Wert <version> gibt die aktuelle Version der Bibliothek an, die mit Ihrer aktuellen ArcGIS Server-Version identisch ist, und zwar im Format n.n.n. Zum Beispiel: ArcGIS Server 10.8:
conda install -c esri arcgis-server-py3=10.8.0
Durch die Installation des arcgis-server-py3-Pakets werden ArcPy sowie unterstützte Geoverarbeitungswerkzeuge und alle Drittanbieteranforderungen hinzugefügt.
Migration
Die Verwendung der Python 3-Runtime mit ArcGIS Server unterscheidet sich von Python 2 ArcGIS Server und anderen ArcGIS-Produkten, z. B. ArcGIS Desktop. Es müssen zwei primäre Unterschiede berücksichtigt werden: die Änderung von Python 2 in 3 und Unterschiede innerhalb von arcpy.
Änderungen an Funktionen in ArcPy
Bis auf einige Ausnahmen, sind viele Geoverarbeitungswerkzeuge weiterhin in der Python 3-Runtime für ArcGIS Server verfügbar. Die Werkzeuge in den Toolboxes "Parcel Fabric", "Schematics" und "Tracking Analyst" sind nicht enthalten. Zusätzliche Werkzeuge in anderen Toolboxes sind ebenfalls nicht verfügbar. Eine vollständige Liste der unterstützten Geoverarbeitungswerkzeuge finden Sie in der readme-Datei, die im arcgis-server-py3-Paket enthalten ist.
Das Modul arcpy.mapping wurde entfernt und durch das Modul arcpy.mp in ArcGIS Pro ersetzt. Das Modul arcpy.na umfasst außerdem Änderungen, von denen viele mit der Änderung von arcpy.mapping in arcpy.mp in Beziehung stehen.
Python-Versionsänderung
Die Python-Runtime von ArcGIS Server verwendet Python 3. Dies unterscheidet sich erheblich von anderen ArcGIS-Produkten, die Releases der Python 2-Serie verwendet haben und weiterhin verwenden. Die Releases in der Python 3-Serie sind nicht mit der Python 2-Serie kompatibel. Zwar ist der Großteil der Sprache identisch, aber viele wesentliche Details haben sich deutlich geändert, z. B. die Funktionsweise von Strings und Wörterbüchern oder der Aufbau der Standardbibliothek.
Python 3 befindet sich seit mehreren Jahren in aktiver Entwicklung und in Koexistenz mit Python 2, damit die Python-Community eine Portierung durchführen konnte. Mittlerweile wurde die Mehrheit von wichtigen Dritthersteller-Bibliotheken auf Python 3 portiert und die Python-Community hat vereinbart, dass alle neuen Entwicklungsprojekte in Python 3 erfolgen werden.
Ein wesentlicher Entscheidungsfaktor ist, ob Sie Ihren Python-Code so aktualisieren, dass er in Python 2 und 3 funktioniert. Bei einer einfachen Konvertierung von Python 2 zu Python 3 kann das Befehlszeilen-Dienstprogramm 2to3 verwendet werden, um einen Großteil des Vorgangs zu automatisieren. Dieses Dienstprogramm ist mit Python 2 und 3 verfügbar. Es ist wichtig zu wissen, dass 2to3 ein ausgezeichnetes Werkzeug, aber keine komplette Lösung (mitunter als 95-Prozent-Lösung bezeichnet) ist, und dass möglicherweise zusätzliche Änderungen erforderlich sind.
Eine gute Referenz zur Portierung zu Python 3 sowie Migrationsstrategien finden Sie unter Porting to Python 3 (Portieren zu Python 3) von Lennart Regebro auf der Website http://python3porting.com/. Sie können Skripte schreiben, die sowohl in Python 2 als auch in Python 3 ausgeführt werden.
Bedenken Sie, dass einfachere Python-Skripte eventuell keine Änderungen verlangen und in beiden Versionen ordnungsgemäß ausgeführt werden.