O SP1 para ArcGIS 10.1 possui extensão para Python de 64 bits para geoprocessamento em segundo plano - implicações para outro uso do Python

12

Se o Geoprocessamento em segundo plano de 64 bits para o ArcGIS Desktop 10.1sp1 estiver instalado, como isso afeta a configuração do Python para uso geral?

A Esri lançou o SP1 para o produto ArcGIS 10.1 e, para o componente Desktop, disponibilizou uma instância de Python 2.7.2 de 64 bits que, quando instalada, substitui as chamadas Esri de 32 bits do Python 2.7 por chamadas de 64 bits para geoprocessamento em segundo plano (processamento enviado lado de uma sessão ativa da GUI do ArcGIS Desktop).

A instalação é opcional - ou seja, sem ela o ArcGIS Desktop continua com apenas espaço de memória do usuário de 32 bits disponível. Com isso, uma entrada \ bin64 é feita na pasta do programa Esri e as chaves do registro são estabelecidas para o processamento de 64 bits em "HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ ArcGIS 10.1 SP1 para Geoprocessamento em Segundo Plano de Desktop (64 bits)" e o geoprocessamento em segundo plano é então feito no espaço de memória de 64 bits.

Tanto o Esri de 32 bits como o Python de 64 bits são instalações completas 2.7.2.

Durante o geoprocessamento em segundo plano do registro da Esri, os arquivos de caminho e configuração cuidam da chamada dos executáveis ​​Python de 64 bits. Enquanto o uso de Python de 32 bits é mantido na sessão do ArcGIS Desktop, quando necessário.

Portanto, o que resta a cada usuário é decidir se o Python 2.7.2 de 64 bits instalado deve ser integrado às suas necessidades de computação fora do ArcGIS. E qual a melhor maneira de fazer isso quando as versões de 32 e 64 bits do Python residem no sistema?

Perguntado de outra maneira - a Esri cuida da integração do Python de 64 bits em seu ArcGIS Desktop; então, de que maneira funcionará para configurá-lo para o restante dos casos de uso além do ArcGIS?

V Stuart Foote
fonte
Apenas curioso, você usou o Process Monitor ou algo parecido para monitorar a instalação deste pacote? Estava pensando em fazer isso sozinho.
precisa saber é o seguinte
não, mudanças apenas revisados no sistema de arquivos e Registro
V Stuart Foote
3
Fiz um rápido antes e depois do teste de desempenho de 64 bits em geoprocessamento em segundo plano - não tenho certeza se apenas uma leve melhoria (10%) é o que deveria ser esperado.
PolyGeo
4
@Arabella - Eu não esperaria que a troca para 32 bits tornasse algo mais rápido e a melhoria de 10% vinculada não parece estatisticamente significativa. A principal diferença é que a versão de 64 bits permitirá que o geoprocesso use mais de 4 GB de RAM. Qualquer outra coisa será tangencial.
GIS-Jonathan
2
@PolyGeo - Fundamentalmente, a principal diferença entre 32 bits e 64 bits é que os aplicativos de 32 bits não podem usar mais de 4 GB de RAM (eles simplesmente não conseguem lidar com isso - na verdade, é mais provável 2 GB ou 3 GB no Windows, dependendo de sinalizadores). De qualquer forma, para realmente ver o benefício de 32 bits versus 64 bits, seria necessário realizar um teste que usaria mais de ~ 4 GB de RAM. Obviamente, pode haver otimizações que a ESRI fez entre as versões, mas a própria idade de 32/64 bits lida apenas com o uso de RAM em seu nível principal.
GIS-Jonathan

Respostas:

1

Portanto, o que resta a cada usuário é decidir se o Python 2.7.2 de 64 bits instalado deve ser integrado às suas necessidades de computação fora do ArcGIS. E qual a melhor maneira de fazer isso quando as versões de 32 e 64 bits do Python residem no sistema?

Pelo que entendi, você está perguntando como podemos distinguir diferentes versões do python e usá-lo de acordo com nossas necessidades.

A maneira mais fácil é especificar exatamente o intérprete que você usará para executar seu script. Mais detalhes podem ser encontrados neste SO q / a.

Alex Markov
fonte
Num sentido. Mas estou mais interessado em fazer isso programaticamente durante o script. Como alternar entre PYTHONHOME e PYTHONPATH e, em seguida, manipulá-los com chamadas sys.path.append () ou site.addsitedir () para reconfigurar o sistema para usar Python de 32 ou 64 bits. A sugestão no SO q / a de apenas chamar uma versão do Python ou outra é meio grosseira. O desafio seria que a fineza fizesse uso flexível do módulo do site e trabalhasse de maneira confiável em um IDE. Além da manipulação simples de caminho e pacote de sites, é possível ter várias configurações do Python com virtualenv de ambientes de 32 e 64 bits.
V Stuart Foote
No seu script, você pode tentar chamar a execução de outro script python chamando-o com o intérprete necessário (x32 ou x64) na linha de comando usando o módulo de subprocesso , por exemplo.
AlexMarkov
0

Para mim, é isso que foi necessário ... e ainda não tenho certeza de que tudo está funcionando 'corretamente'. Depois de instalar as ferramentas de geoprocessamento de fundo de 64 bits e alterar meu PYTHONPATH para usá-las (por exemplo, python padrão), parece que ele quebrou tudo no ArcMap (por exemplo, console python de 32 bits). Então, eu vim com o seguinte trabalho ao redor. YMMV

1) Baixe e execute as ferramentas de geoprocessamento em segundo plano de 64 bits: Felizmente, encontrei uma vez! Não consigo encontrar o link novamente ...

2) Adicione o seguinte ao sistema PYTHONPATH (assumindo que você esteja usando 64 bits por padrão):; 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: \ Arquivos de programas (x86) \ ArcGIS \ Desktop10.1 \ bin64; C: \ Arquivos de programas (x86) \ ArcGIS \ Desktop10.1 \ arcpy; C: \ Arquivos de programas (x86) \ ArcGIS \ Desktop10.1 \ ArcToolbox \ Scripts

3) Crie um script de inicialização para o Arcmap Python, para que não seja confundido com as importações de 64 bits do 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
fonte