SP1 для ArcGIS 10.1 имеет расширение для 64-битного Python для фоновой геообработки - последствия для другого использования Python

12

Если установлена 64-битная фоновая геообработка для ArcGIS Desktop 10.1sp1, как это влияет на конфигурацию Python для общего использования?

Esri выпустила пакет обновления 1 (SP1) для продукта ArcGIS 10.1, а для компонента Desktop - 64-битный экземпляр Python 2.7.2, который после установки заменяет 32-битные вызовы Pyri 2.7 Esri на 64-битные вызовы для фоновой геообработки (обработка отправлена). сторона активной сессии ArcGIS Desktop GUI).

Установка необязательна - т.е. без нее ArcGIS Desktop продолжает работать только с 32-битным пространством пользовательской памяти. При этом в папку программы Esri делается запись \ bin64, а для 64-битной обработки устанавливаются ключи реестра в «HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ ArcGIS 10.1 SP1 для фоновой геообработки рабочего стола (64-битная версия»), а затем выполняется фоновая геообработка. сделано в 64-битном пространстве памяти.

И 32-разрядная версия Esri, и теперь ее 64-разрядная версия Python имеют полную версию 2.7.2.

Во время фоновой геообработки реестра Esri файлы пути и конфигурации заботятся о вызове 64-битных исполняемых файлов Python. При этом использование 32-битного Python сохраняется в сеансе ArcGIS Desktop, где это необходимо.

Итак, каждому пользователю остается решить, стоит ли интегрировать установленный 64-битный Python 2.7.2 в свои вычислительные потребности вне ArcGIS. И как лучше всего это сделать, когда 32-битная и 64-битная версии Python находятся в системе?

Если спросить другой путь - Esri позаботится об интеграции 64-битного Python в свой ArcGIS Desktop, так какие способы будут работать для его настройки для остальных вариантов использования, помимо ArcGIS?

В Стюарт Фут
источник
Просто любопытно, вы использовали Process Monitor или что-то подобное, чтобы контролировать установку этого пакета? Думал сделать это сам.
blah238
нет, только что рассмотрел изменения в файловой системе и реестре
V Stuart Foote
3
Я провел быстрый до и после 64-битный тест производительности фоновой геообработки - не уверен, следует ли ожидать только незначительного (10%) улучшения.
PolyGeo
4
@Arabella - я не ожидал бы, что переключение на 32 бита сделает что-то быстрее, и связанное улучшение на 10% не кажется статистически значимым. Основное отличие состоит в том, что 64-битная версия позволит геопроцессору использовать более 4 ГБ оперативной памяти. Все остальное будет тангенциальным.
ГИС-Джонатан
2
@PolyGeo - По сути, основное различие между 32-битными и 64-битными заключается в том, что 32-битные приложения не могут использовать более 4 ГБ ОЗУ (они просто не могут решить эту проблему - на самом деле более вероятно 2 ГБ или 3 ГБ в Windows в зависимости от флагов и прочего). В любом случае, чтобы по-настоящему увидеть преимущества 32-битной и 64-битной систем, вам необходимо выполнить тест, который будет использовать более ~ 4 ГБ ОЗУ. Конечно, ESRI может быть оптимизирован между версиями, но сам 32/64-битный век имеет дело только с использованием ОЗУ на уровне ядра.
ГИС-Джонатан

Ответы:

1

Итак, каждому пользователю остается решить, стоит ли интегрировать установленный 64-битный Python 2.7.2 в свои вычислительные потребности вне ArcGIS. И как лучше всего это сделать, когда 32-битная и 64-битная версии Python находятся в системе?

Как я понял, вы спрашиваете, как мы можем различать разные версии Python и использовать его в соответствии с нашими потребностями.

Самый простой способ - точно указать интерпретатор, который вы собираетесь использовать для запуска скрипта. Более подробную информацию можно найти в этом SO q / a.

Алекс Марков
источник
В некотором смысле. Но мне больше интересно делать это программно во время написания сценариев. Как переключать PYTHONHOME и PYTHONPATH, а затем манипулировать ими с помощью вызовов sys.path.append () или site.addsitedir (), чтобы перенастроить систему для использования 32-битного или 64-битного Python. В SO q / a предложение просто вызвать ту или иную версию Python довольно грубо. Сложной задачей будет гибкость гибкого использования модуля сайта и надежной работы в среде IDE. Помимо простых путей и манипуляций с пакетами сайтов, возможно иметь несколько конфигураций Python с virtualenv для 32-битных и 64-битных сред.
V Стюарт Фут
В вашем скрипте вы можете попытаться вызвать выполнение другого скрипта Python, вызвав его с необходимым интерпретатором (x32 или x64) из командной строки, используя, например, модуль подпроцесса .
Алекс Марков
0

Для меня это то, что требовалось ... и я все еще не уверен, что все работает "правильно". После того, как я установил 64-битные инструменты фоновой геообработки и изменил свой PYTHONPATH для их использования (например, из python по умолчанию), кажется, он сломал все в ArcMap (например, 32-битный консольный python). Итак, я придумал следующую работу вокруг. YMMV

1) Скачайте и запустите 64-битные инструменты фоновой геообработки: К счастью, я нашел это однажды! Я не могу найти ссылку снова ...

2) Добавьте следующее в системную PYTHONPATH (при условии, что вы используете 64-битную версию по умолчанию):; 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) Создайте скрипт запуска для Arcmap Python, чтобы он не путался с 64-битным импортом из 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

Джон
источник