ArcGIS Server ofrece la opción de utilizar un tiempo de ejecución de Python 3 para scripts de ArcPy de la línea de comandos. Python 3.x se instala con ArcGIS Server, pero puede instalar un paquete de tiempo de ejecución de Python 3 independiente que simplifica el uso de Python 3 con ArcGIS Server.
Introducción
Python ofrece bibliotecas de terceros que se pueden utilizar en ArcGIS. No obstante, gestionar qué paquetes están instalados puede ser una tarea compleja y que lleve mucho tiempo, sobre todo cuando se trabaja con varios proyectos a la vez o cuando se intenta compartir código con otros usuarios. Para simplificar el uso del tiempo de ejecución de Python 3 en ArcGIS Server para Linux, utilice conda para descargar e instalar el paquete de arcgis-server-py3.
Si todavía no tiene conda, puede descargarlo desde el sitio web de Anaconda.
Para acceder a la funcionalidad de Python de ArcGIS, incluido ArcPy, instale el paquete arcgis-server-py3. En un entorno de conda, utilice el comando siguiente para instalar Python 3:
conda install -c esri arcgis-server-py3=<ArcGIS Server version>
El valor <version> indica la versión actual de la biblioteca, que es la misma que su versión actual de ArcGIS Server, en formato n.n.n. Por ejemplo, para ArcGIS Server 10.9.1 utilice lo siguiente:
conda install -c esri arcgis-server-py3=11.0
La instalación del paquete arcgis-server-py3 agregará ArcPy, incluidas las herramientas de geoprocesamiento compatibles y todos los requisitos de terceros.
Si no instala el paquete de arcgis-server-py3, debe invocar a Wine al ejecutar el archivo python.exe instalado en /arcgis/server/framework/runtime/ArcGIS/bin/Python/envs/arcgispro-py3/ en el directorio de instalación de ArcGIS Server.
Migración
El modo de utilizar el tiempo de ejecución de Python 3 con ArcGIS Server es diferente al de Python 2 con ArcGIS Server. Existen dos diferencias principales a las que debe ajustarse con ArcPy y el cambio en las versiones de Python.
Cambios en las funciones de ArcPy
Muchas herramientas de geoprocesamiento seguirán estando disponibles en el tiempo de ejecución de Python 3 para ArcGIS Server; sin embargo, algunas no lo estarán. Las herramientas de las cajas de herramientas Parcel Fabric (ArcMap) , Schematics y Tracking Analyst no están incluidas. Algunas herramientas de otras cajas de herramientas tampoco están disponibles. Para obtener una lista completa de las herramientas de geoprocesamiento compatibles, consulte el archivo readme que se incluye en el paquete arcgis-server-py3.
El módulo arcpy.mapping se ha eliminado y se ha sustituido por un módulo arcpy.mp en ArcGIS Pro. El módulo arcpy.na también incluye cambios, muchos de ellos relacionados con el paso de arcpy.mapping a arcpy.mp.
Cambio de la versión de Python
El tiempo de ejecución de Python de ArcGIS Server utiliza Python 3. Este es un cambio importante, ya que la línea de versiones de Python 3 es incompatible con la línea de Python 2. Aunque buena parte del lenguaje es esencialmente igual, muchos detalles importantes han cambiado bastante, incluidos el funcionamiento de las cadenas de caracteres y los diccionarios, y la organización de la biblioteca estándar.
En este momento, la comunidad de Python ha migrado la mayoría de las bibliotecas clave de terceros a Python 3 y en la comunidad de Python existe un amplio consenso sobre el hecho de que los nuevos proyectos de desarrollo se realizarán en Python 3.
ArcGIS Server ya no admite Python 2.7. Para seguir usando su código de Python con ArcGIS Server, debe asegurarse de que el código funcione en Python 3.
Si va a realizar una conversión unidireccional del código de Python 2 a Python 3, hay una utilidad de línea de comando denominada 2to3 que puede usar para automatizar buena parte del proceso. Es importante recordar que 2to3, aun siendo una excelente herramienta, no es una solución completa (a veces se valora como una solución completa al 95%) y puede ser necesario realizar cambios adicionales.
Recuerde que las secuencias de comandos de Python más sencillas pueden no requerir cambios y probablemente funcionarán bien sin modificaciones.