SP1 para ArcGIS 10.1 tiene una extensión para Python de 64 bits para el geoprocesamiento en segundo plano, implicaciones para otro uso de Python

12

Si está instalado el Geoprocesamiento en segundo plano de 64 bits para ArcGIS Desktop 10.1sp1, ¿cómo afecta eso a la configuración de Python para uso general?

Esri ha lanzado SP1 para el producto ArcGIS 10.1, y para el componente Desktop ha puesto a disposición una instancia de Python 2.7.2 de 64 bits que, cuando está instalada, reemplaza las llamadas de Python 2.7 de Esri de 32 bits con llamadas de 64 bits para el geoprocesamiento en segundo plano (procesamiento enviado lado de una sesión activa de la GUI de ArcGIS Desktop).

La instalación es opcional, es decir, sin ella ArcGIS Desktop continúa con solo espacio de memoria de usuario de 32 bits disponible. Con él, se realiza una entrada \ bin64 en la carpeta del programa Esri, y se establecen claves de registro para el procesamiento de 64 bits en "HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ ArcGIS 10.1 SP1 para el geoprocesamiento de fondo de escritorio (64 bits)" y el geoprocesamiento en segundo plano es entonces hecho en espacio de memoria de 64 bits.

Tanto Esri de 32 bits como ahora su Python de 64 bits son instalaciones completas 2.7.2.

Durante el geoprocesamiento en segundo plano del registro de Esri, los archivos de ruta y configuración se encargan de llamar a los ejecutables de Python de 64 bits. Si bien el uso de Python de 32 bits se conserva en la sesión de ArcGIS Desktop cuando sea necesario.

Entonces, lo que queda para cada usuario es decidir si integrar el Python 2.7.2 de 64 bits instalado en sus necesidades informáticas fuera de ArcGIS. ¿Y cuál es la mejor manera de hacerlo cuando las versiones de Python de 32 y 64 bits residen en el sistema?

Preguntado de otra manera: Esri se encarga de la integración de Python de 64 bits dentro de su ArcGIS Desktop, entonces, ¿qué formas funcionarán para configurarlo para el resto de los casos de uso más allá de ArcGIS?

V Stuart Foote
fuente
Por curiosidad, ¿usó Process Monitor o algo así para monitorear la instalación de este paquete? Estaba pensando en hacerlo yo mismo.
blah238
no, solo revisé los cambios en el sistema de archivos y el registro
V Stuart Foote
3
Hice una prueba rápida de rendimiento de geoprocesamiento en segundo plano antes y después de 64 bits ; no estoy seguro de si solo se debería haber esperado una ligera mejora (10%).
PolyGeo
44
@Arabella: no esperaría cambiar a 32 bits para hacer que todo sea más rápido y la mejora del 10% vinculada no parece estadísticamente significativa. La principal diferencia es que la versión de 64 bits permitirá que el geoprocesamiento use más de 4 GB de RAM. Cualquier otra cosa será tangencial.
GIS-Jonathan
2
@PolyGeo: Fundamentalmente, la diferencia principal entre 32 bits y 64 bits es que las aplicaciones de 32 bits no pueden usar más de 4 GB de RAM (simplemente no pueden abordarlo, en realidad es más probable que 2 GB o 3 GB en Windows, dependiendo de las banderas y demás). De todos modos, para ver realmente el beneficio de 32 bits frente a 64 bits, necesitaría realizar una prueba que usaría más de ~ 4 GB de RAM. Por supuesto, puede haber optimizaciones que ESRI haya hecho entre las versiones, pero la edad de 32/64 bits solo se ocupa del uso de RAM en su nivel central.
GIS-Jonathan

Respuestas:

1

Entonces, lo que queda para cada usuario es decidir si integrar el Python 2.7.2 de 64 bits instalado en sus necesidades informáticas fuera de ArcGIS. ¿Y cuál es la mejor manera de hacerlo cuando las versiones de Python de 32 y 64 bits residen en el sistema?

Como entendí, está preguntando la forma en que podemos distinguir diferentes versiones de python y usarlo de acuerdo con nuestras necesidades.

La forma más fácil es especificar exactamente el intérprete que usará para ejecutar su script. Se pueden encontrar más detalles en este SO q / a.

Alex Markov
fuente
En un sentido. Pero estoy más interesado en hacer esto programáticamente durante las secuencias de comandos. Cómo alternar PYTHONHOME y PYTHONPATH, y luego manipularlos con llamadas sys.path.append () o site.addsitedir () para reconfigurar el sistema para usar Python de 32 bits o de 64 bits. La sugerencia en el SO q / a de solo llamar a una versión de Python u otra es bastante burda. El desafío sería que la delicadeza haga uso flexible del módulo del sitio y funcione de manera confiable en un IDE. Más allá de la simple ruta y la manipulación del paquete del sitio, es posible tener múltiples configuraciones de Python con virtualenv de entornos de 32 bits y 64 bits.
V Stuart Foote
En su secuencia de comandos, puede intentar ejecutar la ejecución de otra secuencia de comandos de Python llamándola con el intérprete necesario (x32 o x64) desde la línea de comandos utilizando , por ejemplo, el módulo de subproceso .
Alex Markov
0

Para mí, esto es lo que se requería ... y todavía no estoy seguro de que todo funcione "correctamente". Después de instalar las herramientas de geoprocesamiento en segundo plano de 64 bits y cambiar mi PYTHONPATH para usarlas (por ejemplo, Python predeterminado), parece que rompió todo en ArcMap (por ejemplo, Python de consola de 32 bits). Entonces se me ocurrió el siguiente trabajo. YMMV

1) Descargue y ejecute las herramientas de geoprocesamiento en segundo plano de 64 bits: ¡Por suerte lo encontré una vez! Parece que no puedo encontrar el enlace de nuevo ...

2) Agregue lo siguiente al PYTHONPATH del sistema (suponiendo que esté usando 64 bits de forma predeterminada):; C: \ Python27 \ ArcGISx6410.1 \ DLLs; C: \ Python27 \ ArcGISx6410.1 \ lib; C: \ Python27 \ ArcGISx6410 .1 \ lib \ plat-win; C: \ Python27 \ ArcGISx6410.1 \ lib \ lib-tk; C: \ Python27 \ ArcGISx6410.1; C: \ Archivos de programa (x86) \ ArcGIS \ Desktop10.1 \ bin64; C: \ Archivos de programa (x86) \ ArcGIS \ Desktop10.1 \ arcpy; C: \ Archivos de programa (x86) \ ArcGIS \ Desktop10.1 \ ArcToolbox \ Scripts

3) Cree una secuencia de comandos de inicio para Arcmap Python para que no se confunda con las importaciones de 64 bits de PYTHONPATH

import sys
if sys.executable in ['C:\\Python27\\ArcGIS10.1\\python.exe', 'C:\\Program Files (x86)\\ArcGIS\\Desktop10.1\\bin\\ArcMap.exe']:
    print('Resetting Path')
    sys.path = [
        #python32 for ESRI
        'C:\\windows\\system32\\python27.zip',
        'C:\\Python27\\ArcGIS10.1\\DLLs',
        'C:\\Python27\\ArcGIS10.1\\lib',
        'C:\\Python27\\ArcGIS10.1\\lib\\plat-win',
        'C:\\Python27\\ArcGIS10.1\\lib\\lib-tk',
        'C:\\Python27\\ArcGIS10.1',
        'C:\\Python27\\ArcGIS10.1\\lib\\site-packages',
        'C:\\Program Files (x86)\\ArcGIS\\Desktop10.1\\bin',
        'C:\\Program Files (x86)\\ArcGIS\\Desktop10.1\\arcpy',
        'C:\\Program Files (x86)\\ArcGIS\\Desktop10.1\\ArcToolbox\\Scripts',
        #defaults
        'C:\\Python27\\Lib\\',
        'C:\\Python27\\Lib\\site-packages',
        'C:\\pythonnet'
        ]

import arcpy 
from arcpy import env

John
fuente