SP1 pour ArcGIS 10.1 a une extension pour Python 64 bits pour le géotraitement en arrière-plan - implications pour une autre utilisation de Python

12

Si le géotraitement en arrière-plan 64 bits pour ArcGIS Desktop 10.1sp1 est installé, comment cela affecte-t-il la configuration Python pour une utilisation générale?

Esri a publié SP1 pour le produit ArcGIS 10.1 et pour le composant Desktop a mis à disposition une instance Python 2.7.2 64 bits qui, une fois installée, remplace les appels Python 2.7 Esri 32 bits par des appels 64 bits pour le géotraitement en arrière-plan (traitement envoyé côté d'une session graphique ArcGIS Desktop active).

L'installation est facultative, c'est-à-dire que sans elle, ArcGIS Desktop continue avec seulement l'espace mémoire utilisateur 32 bits disponible. Avec elle, une entrée \ bin64 est créée dans le dossier du programme Esri, et des clés de registre sont établies pour le traitement 64 bits dans "HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ ArcGIS 10.1 SP1 for Desktop Background Geotocessing (64-bit)" et le géotraitement en arrière-plan est ensuite fait dans un espace mémoire de 64 bits.

Les versions 32 bits d'Esri et maintenant son Python 64 bits sont des installations complètes 2.7.2.

Pendant le géotraitement en arrière-plan du registre d'Esri, les fichiers de chemin et de configuration prennent soin d'appeler les exécutables Python 64 bits. Bien que l'utilisation de Python 32 bits soit conservée dans la session ArcGIS Desktop si nécessaire.

Donc, ce qui reste à chaque utilisateur est de décider s'il faut intégrer le Python 2.7.2 64 bits installé dans ses besoins informatiques en dehors d'ArcGIS. Et comment le faire au mieux lorsque les versions 32 et 64 bits de Python résident sur le système?

Interrogé d'une autre manière - Esri s'occupe de l'intégration de Python 64 bits dans son ArcGIS Desktop, alors quelles méthodes fonctionneront pour le configurer pour le reste des cas d'utilisation au-delà d'ArcGIS?

V Stuart Foote
la source
Juste curieux, avez-vous utilisé Process Monitor ou un autre pour surveiller l'installation de ce package? Pensais à le faire moi-même.
blah238
non, je viens de passer en revue les modifications du système de fichiers et du registre
V Stuart Foote
3
Je l' ai fait un rapide avant et après 64bit Contexte géotraitement test de performance - pas sûr si une légère amélioration (10%) seulement ce qui aurait dû être prévu.
PolyGeo
4
@Arabella - Je ne m'attendrais pas à ce que le passage à 32 bits accélère quoi que ce soit et l'amélioration de 10% liée ne semble pas statistiquement significative. La principale différence est que la version 64 bits permettra au géoprocessus d'utiliser plus de 4 Go de RAM. Tout le reste sera tangentiel.
GIS-Jonathan
2
@PolyGeo - Fondamentalement, la principale différence entre 32 bits et 64 bits est que les applications 32 bits ne peuvent pas utiliser plus de 4 Go de RAM (elles ne peuvent tout simplement pas y faire face - en fait plus probablement 2 Go ou 3 Go sous Windows en fonction des indicateurs et autres). Quoi qu'il en soit, pour vraiment voir les avantages du 32 bits par rapport au 64 bits, vous devez effectuer un test qui utiliserait plus de ~ 4 Go de RAM. Bien sûr, ESRI peut avoir des optimisations entre les versions, mais l'âge 32/64 bits lui-même ne traite que de l'utilisation de la RAM à son niveau de base.
GIS-Jonathan

Réponses:

1

Donc, ce qui reste à chaque utilisateur est de décider s'il faut intégrer le Python 2.7.2 64 bits installé dans ses besoins informatiques en dehors d'ArcGIS. Et comment le faire au mieux lorsque les versions 32 et 64 bits de Python résident sur le système?

Si j'ai bien compris, vous demandez comment distinguer différentes versions de python et l'utiliser en fonction de nos besoins.

Le moyen le plus simple consiste à spécifier exactement l'interpréteur que vous allez utiliser pour exécuter votre script. Plus de détails peuvent être trouvés dans ce SO q / a.

Alex Markov
la source
Dans un sens. Mais je suis plus intéressé à faire cela par programmation lors de l'écriture de scripts. Comment basculer PYTHONHOME et PYTHONPATH, puis les manipuler avec des appels sys.path.append () ou site.addsitedir () pour reconfigurer le système pour utiliser Python 32 bits ou 64 bits. La suggestion dans le SO q / a d'appeler simplement une version Python ou une autre est assez grossière. Le défi serait pour la finesse d'utiliser de manière flexible le module de site et de travailler de manière fiable dans un IDE. Au-delà de la simple manipulation de chemin et de package de site, il est possible d'avoir plusieurs configurations Python avec virtualenv d'environnements 32 bits et 64 bits.
V Stuart Foote
Dans votre script, vous pouvez essayer d'appeler l'exécution d'un autre script python en l'appelant avec l'interpréteur nécessaire (x32 ou x64) à partir de la ligne de commande en utilisant le module de sous - processus par exemple.
Alex Markov
0

Pour moi, c'est ce qui était nécessaire ... et je ne suis toujours pas sûr que tout fonctionne "correctement". Après avoir installé les outils de géotraitement en arrière-plan 64 bits et changé mon PYTHONPATH pour les utiliser (par exemple, python par défaut), il semble qu'il ait tout cassé dans ArcMap (par exemple, python de console 32 bits). J'ai donc trouvé le travail suivant. YMMV

1) Téléchargez et exécutez les outils de géotraitement en arrière-plan 64 bits: Heureusement, je l'ai trouvé une fois! Je n'arrive pas à retrouver le lien ...

2) Ajoutez ce qui suit au système PYTHONPATH (en supposant que vous utilisez 64 bits par défaut):; 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: \ Program Files (x86) \ ArcGIS \ Desktop10.1 \ bin64; C: \ Program Files (x86) \ ArcGIS \ Desktop10.1 \ arcpy; C: \ Program Files (x86) \ ArcGIS \ Desktop10.1 \ ArcToolbox \ Scripts

3) Créez un script de démarrage pour Arcmap Python afin qu'il ne soit pas confondu avec les importations 64 bits depuis 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
la source