SP1 für ArcGIS 10.1 verfügt über eine Erweiterung für 64-Bit-Python für die Hintergrund-Geoverarbeitung - Auswirkungen auf andere Python-Anwendungen

12

Wenn die Wie wirkt sich die Installation 64-Bit-Hintergrund-Geoverarbeitung für ArcGIS Desktop 10.1sp1 auf die allgemeine Verwendung der Python-Konfiguration aus?

Esri hat SP1 für das ArcGIS 10.1-Produkt veröffentlicht und für die Desktop-Komponente eine 64-Bit-Instanz von Python 2.7.2 verfügbar gemacht, die bei der Installation Esri-32-Bit-Aufrufe von Python 2.7 durch 64-Bit-Aufrufe für die Hintergrund-Geoverarbeitung ersetzt (Verarbeitung gesendet) Seite einer aktiven ArcGIS Desktop-GUI-Sitzung).

Die Installation ist optional, dh ohne sie wird ArcGIS Desktop mit nur 32-Bit-Benutzerspeicher fortgesetzt. Damit wird ein \ bin64-Eintrag im Esri-Programmordner erstellt und Registrierungsschlüssel für die 64-Bit-Verarbeitung unter "HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ ArcGIS 10.1 SP1 für die Geoverarbeitung des Desktop-Hintergrunds (64-Bit)" erstellt in 64-Bit-Speicherplatz getan.

Sowohl Esris 32-Bit- als auch sein 64-Bit-Python sind 2.7.2-Installationen.

Während der Hintergrund-Geoverarbeitung der Registrierung von Esri werden in den Pfad- und Konfigurationsdateien die ausführbaren 64-Bit-Dateien von Python aufgerufen. Die Verwendung von 32-Bit-Python wird in der ArcGIS Desktop-Sitzung bei Bedarf beibehalten.

Somit muss jeder Benutzer entscheiden, ob er das installierte 64-Bit-Python 2.7.2 in seine Computeranforderungen außerhalb von ArcGIS integrieren möchte. Und wie geht das am besten, wenn sich sowohl 32- als auch 64-Bit-Versionen von Python auf dem System befinden?

Auf eine andere Art und Weise gefragt: Esri kümmert sich um die Integration von 64-Bit-Python in ArcGIS Desktop. Wie kann es für die übrigen Anwendungsfälle außerhalb von ArcGIS konfiguriert werden?

V Stuart Foote
quelle
Nur neugierig, haben Sie Process Monitor oder etwas Ähnliches verwendet, um die Installation dieses Pakets zu überwachen? Dachte daran, das selbst zu tun.
blah238
Nein, ich habe gerade Änderungen im Dateisystem und in der Registrierung überprüft
V Stuart Foote
3
Ich habe kurz vor und nach der 64-Bit-Geoverarbeitung im Hintergrund einen Leistungstest durchgeführt. Ich bin mir nicht sicher, ob nur eine leichte Verbesserung (10%) zu erwarten ist.
PolyGeo
4
@Arabella - Ich würde nicht erwarten, dass ein Wechsel auf 32 Bit etwas schneller macht, und die damit verbundene Verbesserung um 10% scheint statistisch nicht signifikant zu sein. Der Hauptunterschied besteht darin, dass die 64-Bit-Version es dem Geoverfahren ermöglicht, mehr als 4 GB RAM zu verwenden. Alles andere wird tangential sein.
GIS-Jonathan
2
@PolyGeo - Grundsätzlich besteht der Hauptunterschied zwischen 32-Bit- und 64-Bit-Anwendungen darin, dass 32-Bit-Anwendungen nicht mehr als 4 GB RAM verwenden können (sie können es einfach nicht adressieren - tatsächlich eher 2 GB oder 3 GB unter Windows, abhängig von Flags und anderen Dingen). Um die Vorteile von 32-Bit im Vergleich zu 64-Bit wirklich zu erkennen, müssten Sie einen Test durchführen, der mehr als ~ 4 GB RAM verbraucht. Natürlich kann es Optimierungen geben, die ESRI zwischen den Versionen vorgenommen hat, aber das 32/64-Bit-Zeitalter selbst befasst sich nur mit der RAM-Nutzung auf seiner Kernebene.
GIS-Jonathan

Antworten:

1

Somit muss jeder Benutzer entscheiden, ob er das installierte 64-Bit-Python 2.7.2 in seine Computeranforderungen außerhalb von ArcGIS integrieren möchte. Und wie geht das am besten, wenn sich sowohl 32- als auch 64-Bit-Versionen von Python auf dem System befinden?

Wie ich verstanden habe, fragen Sie, wie wir verschiedene Versionen von Python unterscheiden und je nach Bedarf verwenden können.

Am einfachsten ist es, den Interpreter genau anzugeben, mit dem Sie Ihr Skript ausführen. Weitere Details finden Sie in diesem SO-Fragebogen.

Alex Markov
quelle
In einem Sinn. Aber ich bin mehr daran interessiert, dies während des Skripts programmatisch zu tun. So schalten Sie PYTHONHOME und PYTHONPATH um und bearbeiten sie dann mit sys.path.append () - Aufrufen oder site.addsitedir (), um das System für die Verwendung von 32-Bit- oder 64-Bit-Python neu zu konfigurieren. Der Vorschlag in der SO-Frage, nur die eine oder andere Python-Version aufzurufen, ist etwas grob. Die Herausforderung wäre, das Site-Modul flexibel einzusetzen und zuverlässig in einer IDE zu arbeiten. Über die einfache Manipulation von Pfaden und Site-Paketen hinaus ist es möglich, mehrere Python-Konfigurationen mit einer virtuellen 32-Bit- und 64-Bit-Umgebung zu erstellen.
V Stuart Foote
In Ihrem Skript können Sie versuchen, die Ausführung eines anderen Python-Skripts aufzurufen, indem Sie es mit dem erforderlichen Interpreter (x32 oder x64) über die Befehlszeile aufrufen, indem Sie beispielsweise das Subprozessmodul verwenden .
Alex Markov
0

Für mich war das erforderlich ... und ich bin mir immer noch nicht sicher, ob alles richtig funktioniert. Nachdem ich die 64-Bit-Hintergrund-Geoverarbeitungswerkzeuge installiert und mein PYTHONPATH geändert habe, um sie zu verwenden (z. B. von Standardpython), hat es anscheinend alles in ArcMap (z. B. 32-Bit-Konsolenpython) beschädigt. Also habe ich mir die folgende Arbeit ausgedacht. YMMV

1) Laden Sie die 64-Bit-Hintergrund-Geoverarbeitungswerkzeuge herunter und führen Sie sie aus: Zum Glück habe ich sie einmal gefunden! Ich kann den Link nicht mehr finden ...

2) Fügen Sie dem System PYTHONPATH Folgendes hinzu (vorausgesetzt, Sie verwenden standardmäßig 64-Bit):; 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: \ Programme (x86) \ ArcGIS \ Desktop10.1 \ bin64; C: \ Programme (x86) \ ArcGIS \ Desktop10.1 \ arcpy; C: \ Programme (x86) \ ArcGIS \ Desktop10.1 \ ArcToolbox \ Scripts

3) Erstellen Sie ein Startskript für Arcmap Python, damit es nicht mit 64-Bit-Importen von PYTHONPATH verwechselt wird

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
quelle