Dodatek SP1 dla ArcGIS 10.1 ma rozszerzenie dla 64-bitowego języka Python do geoprzetwarzania w tle - implikacje dla innych zastosowań języka Python

12

Jeśli zainstalowane jest 64-bitowe geoprzetwarzanie w tle dla ArcGIS Desktop 10.1sp1, jak wpływa to na konfigurację Pythona do ogólnego użytku?

Esri wydało dodatek SP1 dla produktu ArcGIS 10.1, a dla komponentu Desktop udostępnił 64-bitową instancję Python 2.7.2, która po zainstalowaniu zastępuje 32-bitowe wywołania Esri Python 2.7 64-bitowymi wywołaniami geoprzetwarzania w tle (wysyłane przetwarzanie strona aktywnej sesji ArcGIS Desktop GUI).

Instalacja jest opcjonalna - tzn. Bez niej ArcGIS Desktop kontynuuje pracę z dostępną tylko 32-bitową pamięcią użytkownika. Za jego pomocą w folderze programu Esri wprowadzany jest wpis \ bin64, a klucze rejestru są tworzone do 64-bitowego przetwarzania w „HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ ArcGIS 10.1 SP1 dla Desktop Background Geoprocessing (64-bit)”, a następnie geoprocesowanie w tle wykonane w 64-bitowej przestrzeni pamięci.

Zarówno 32-bitowy Esri, jak i teraz 64-bitowy Python są pełnymi instalacjami w wersji 2.7.2.

Podczas geoprzetwarzania w tle rejestr Esri, pliki ścieżki i konfiguracji zajmują się wywoływaniem 64-bitowych plików wykonywalnych Pythona. Podczas gdy używanie 32-bitowego Pythona jest zachowywane w sesji ArcGIS Desktop, tam gdzie jest to konieczne.

Pozostaje więc każdemu użytkownikowi zdecydować, czy zintegrować zainstalowanego 64-bitowego Pythona 2.7.2 z jego potrzebami obliczeniowymi poza ArcGIS. A jak najlepiej to zrobić, gdy w systemie znajdują się zarówno 32-, jak i 64-bitowe wersje Pythona?

Pytanie zadane w inny sposób - Esri zajmuje się integracją 64-bitowego Pythona w swoim ArcGIS Desktop, więc w jaki sposób będzie działać, aby skonfigurować go dla pozostałych przypadków użycia poza ArcGIS?

V Stuart Foote
źródło
Ciekawe, czy używałeś Monitora Procesu lub czegoś takiego do monitorowania instalacji tego pakietu? Myślałem o zrobieniu tego sam.
blah238,
nie, właśnie sprawdziłem zmiany w systemie plików i rejestrze
V Stuart Foote,
3
Zrobiłem szybki przed i po 64-bitowym teście wydajności Geoprocessing w tle - nie jestem pewien, czy należy oczekiwać jedynie niewielkiej (10%) poprawy.
PolyGeo
4
@Arabella - nie spodziewałbym się zamiany na 32 bity, aby zrobić coś szybciej, a 10% związana poprawa nie wydaje się statystycznie znacząca. Główną różnicą jest to, że wersja 64-bitowa pozwoli geoprocesowi na użycie ponad 4 GB pamięci RAM. Wszystko inne będzie styczne.
GIS-Jonathan
2
@PolyGeo - Zasadniczo podstawowa różnica między 32-bitowym a 64-bitowym polega na tym, że aplikacje 32-bitowe nie mogą zużywać więcej niż 4 GB pamięci RAM (po prostu nie mogą tego rozwiązać - w rzeczywistości bardziej prawdopodobne jest, że 2 GB lub 3 GB w systemie Windows w zależności od flag i innych rzeczy). W każdym razie, aby naprawdę zobaczyć zalety 32-bitowych w porównaniu z 64-bitowymi, musisz wykonać test, który zużyłby więcej niż ~ 4 GB pamięci RAM. Oczywiście mogą istnieć optymalizacje, które ESRI przeprowadziła między wersjami, ale sam 32/64-bitowy wiek zajmuje się tylko wykorzystaniem pamięci RAM na poziomie podstawowym.
GIS-Jonathan

Odpowiedzi:

1

Pozostaje więc każdemu użytkownikowi zdecydować, czy zintegrować zainstalowanego 64-bitowego Pythona 2.7.2 z jego potrzebami obliczeniowymi poza ArcGIS. A jak najlepiej to zrobić, gdy w systemie znajdują się zarówno 32-, jak i 64-bitowe wersje Pythona?

Jak zrozumiałem, pytasz, w jaki sposób możemy rozróżnić różne wersje Pythona i używać go zgodnie z naszymi potrzebami.

Najprostszym sposobem jest dokładne określenie interpretera, którego będziesz używać do uruchamiania skryptu. Więcej szczegółów można znaleźć w tym SO q / a.

Alex Markov
źródło
W sensie. Ale bardziej interesuje mnie robienie tego programowo podczas pisania skryptów. Jak przełączać PYTHONHOME i PYTHONPATH, a następnie manipulować nimi za pomocą wywołań sys.path.append () lub site.addsitedir () w celu zmiany konfiguracji systemu na 32-bitowy lub 64-bitowy Python. Sugestia w SO q / a po prostu wywołania jednej wersji Pythona lub innej jest dość gruba. Wyzwaniem byłoby, gdyby finezja elastycznie korzystała z modułu strony i działała niezawodnie w środowisku IDE. Poza prostą ścieżką i manipulowaniem pakietem strony, możliwe jest posiadanie wielu konfiguracji Pythona z virtualenv środowisk 32-bitowych i 64-bitowych.
V Stuart Foote,
W skrypcie możesz spróbować wywołać wykonanie innego skryptu python, wywołując go za pomocą potrzebnego interpretera (x32 lub x64) z wiersza poleceń, na przykład używając modułu podprocesu .
Alex Markov,
0

Dla mnie to było wymagane ... i nadal nie jestem pewien, czy wszystko działa „prawidłowo”. Po zainstalowaniu 64-bitowych narzędzi do geoprzetwarzania w tle i zmianie PYTHONPATH, aby z nich korzystać (np. Domyślny python), wygląda na to, że zepsuł wszystko w ArcMap (np. 32-bitowa python konsoli). Więc wymyśliłem następującą pracę. YMMV

1) Pobierz i uruchom 64-bitowe narzędzia geoprzetwarzania w tle: na szczęście znalazłem to raz! Nie mogę znaleźć linku ponownie ...

2) Dodaj do systemu PYTHONPATH (zakładając, że domyślnie używasz 64-bitowego):; 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) Utwórz skrypt startowy dla Arcmap Python, aby nie pomylić go z 64-bitowym importem z 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

Jan
źródło