В ArcGIS Server доступна опция использования среды выполнения Python 3 для скриптов ArcPy, запускаемых из командной строки. Инструменты выборки могут выполняться в среде выполнения Python 3.x, которая устанавливается независимо от ArcGIS Server.
Прежние версии:
В более ранних версиях ArcGIS Server для Linux скрипты Python могли выполняться только в оболочке Linux, которую надо было вызывать в среде выполнения Python 2.7, поставлявшегося с ArcGIS Server. Такая практика накладывала определенные ограничения, касающиеся использования сторонних библиотек и работы с путями.
Начало работы
Для начала работы вы можете использовать среду выполнения Python 3 на ArcGIS Server для Linux и conda для загрузки и установки пакета arcgis-server-py3.
Python имеет множество предварительно установленных библиотек, которые могут быть использованы в ArcGIS, но принятие решения о том, какие из них следует установить, может оказаться непростой задачей, для решения которой требуется время, особенно при работе над несколькими проектами или при попытке поделиться кодом с коллегами.
Чтобы справиться с этим многообразием, сообщество программистов Python разработало методы, позволяющие создавать проекты в разных версиях Python и упрощающие процесс установки почти всех публично доступных библиотек Python. Наиболее популярный менеджер библиотек Python – это conda. Интеграция conda с ArcGIS Server позволяет разработчикам легко использовать функциональность, найденную в открытых библиотеках Python или у сторонних разработчиков, в ArcGIS Server. Она позволяет быстро устанавливать, запускать и обновлять пакеты и их составляющие для использования в кодах Python.
Если у вас еще нет conda, его можно скачать его с веб-сайта Anaconda.
Чтобы сделать доступными функции ArcGIS Python, включая ArcPy, пакет arcgis-server-py3 можно установить непосредственно с сайта conda. В среде conda используйте следующую команду:
conda install -c esri arcgis-server-py3=<version>
Значение <version> указывает текущую версию библиотеки, которая совпадает с текущей версией ArcGIS Server, в формате n.n.n. Пример для ArcGIS Server 10.8:
conda install -c esri arcgis-server-py3=10.8.0
При установке пакета arcgis-server-py3 будет добавлен ArcPy, в том числе поддерживаемые инструменты геообработки и сторонние дополнения.
Переход
Использование среды выполнения Python 3 с ArcGIS Server отличается от использования Python 2 с ArcGIS Server и другими продуктами ArcGIS, включая ArcGIS Desktop. Есть два основных отличия, которые необходимо уладить: изменение Python с 2 на 3 и отличия внутри самой arcpy.
Изменения функциональности в ArcPy
Большинство инструментов геообработки будут доступны в среде выполнения Python 3 для ArcGIS Server, но не все. Не будут доступны инструменты в наборах инструментов Набор данных участков, Schematics и Tracking Analyst. Также не будут доступны дополнительные инструменты в других наборах инструментов. Полный список поддерживаемых инструментов геообработки см. в файле readme, который включен в пакет arcgis-server-py3.
Модуль arcpy.mapping был удален и заменен модулем arcpy.mp в ArcGIS Pro. Модуль arcpy.na также включает изменения, большая часть которых связана с переходом с arcpy.mapping на arcpy.mp.
Изменение версии Python
В среде выполнения Python ArcGIS Server используется Python 3.Это значительно отличается от других продуктов ArcGIS, в которых использовались и продолжают использоваться версии линейки Python 2. Линейка версий Python 3 несовместима с линейкой Python 2. Хотя принципиально большая часть языка осталась той же самой, многие ключевые детали существенно изменились, в том числе то, как работают строки и словари и то, как организована стандартная библиотека.
Python 3 активно развивался в течение последних нескольких лет, существуя параллельно с Python 2, пока сообщество Python переходило на более высокую версию. В это время большинство ключевых сторонних библиотек было перенесено на Python 3 и в сообществе Python было достигнуто соглашение о том, что все новые проекты развития будут выполняться на Python 3.
Ключевое решение заключается в том, будете ли вы обновлять код Python для работы как в Python 2, так и в Python 3. Если вы выполняете одностороннее преобразование кода из Python 2 в Python 3, то можно воспользоваться утилитой командной строки 2to3, которая может быть использована для автоматизации большей части процесса. Эта утилита доступна как в Python 2, так и в Python 3. Важно заметить, что, хотя утилита 2to3 и является превосходным инструментом, она не предоставляет полного, законченного решения (иногда полученный эффект оценивается в 95 процентов от полного решения), и могут потребоваться дополнительные изменения.
Отличным справочным материалом по переходу на Python 3 и по стратегиям переноса является руководство Леннарта Регебро Переход на Python 3, доступное на веб-сайте http://python3porting.com/. Можно писать скрипты, которые будут работать и в Python 2, и в Python 3.
Имейте в виду, что более простые скрипты Python могут корректно работать без всяких изменений.