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.5-Runtime ausgeführt werden, die unabhängig von ArcGIS Server installiert wird.
Ältere Versionen:
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-<arcgis version number>-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 ggf. hier heruntergeladen werden.
Um auf ArcGIS Python-Funktionen, einschließlich ArcPy, zuzugreifen, kann das arcgis-server-<arcgis version number>-py3-Paket direkt über Conda installiert werden. Verwenden Sie in einer Conda-Umgebung den folgenden Befehl:
conda install -c esri arcgis-server-<arcgis version number>-py3
Durch die Installation des arcgis-server-<arcgis version number>-py3 - Pakets steht ArcPy zur Verfügung, einschließlich der unterstützten Geoverarbeitungswerkzeuge und sämtlicher Drittanbieteranforderungen.
Migration
Die Verwendung von Python 3-Runtime mit ArcGIS Server unterscheidet sich von Python 2 ArcGIS Server und anderen ArcGIS-Produkten, wie etwa 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-<arcgis version number>-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
ArcGIS Server Python-Runtime verwendet Python 3.5. 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.