Como o ArcPy trabalhar com o Anaconda?

23

Estou tentando seguir as instruções passo a passo na resposta a " como separar a instalação do Python com o ArcGIS ", mas não consigo encontrar o arquivo de caminho,, DTBGGP64.pthem C:\Python27\ArcGIS10.2\Lib\site-packages.

Alguém enfrentou um problema semelhante?

Gostaria de saber se existe uma solução alternativa, incluindo um arquivo de caminho que informe ao Anaconda onde o arcpy está instalado? Tentei criar um arquivo .pth contendo o seguinte texto:

# .pth file for arcpy

C:\Program Files (x86)\ArcGIS\Desktop10.2\bin 
C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy
C:\Program Files (x86)\ArcGIS\Desktop10.2\Scripts

e salvei em C:\Anaconda\Lib\site-packages(ou seja, se é realmente onde todos os pacotes são salvos), mas recebo o seguinte erro:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy\arcpy\__init__.py", line 21, in <module>
    from arcpy.geoprocessing import gp
  File "C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy\arcpy\geoprocessing\__init__.py", line 14, in <module>
    from _base import *
  File "C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy\arcpy\geoprocessing\_base.py", line 14, in <module>
    import arcgisscripting
ImportError: DLL load failed: %1 is not a valid Win32 application.

Estou executando o conda 3.7-py27 em uma plataforma Windows 7 (64 bits). O Anaconda está instalado C:\Anacondae o ArcMap está instalado C:\ArcGIS\Desktop10.2. Existe uma solução alternativa para que o arcpy funcione com o Anaconda? Eu só quero poder executar meus scripts no Powershell.

user26750
fonte
só para ter certeza - quando você digita 'python' em um prompt do cmd - qual versão / instalação ele ecoa? (ou seja, arcgis ou anaconda?) - Opa, acabei de ver que isso é um pouco datado. prob resolvido até agora.
FluidMotion
Ouvi de um desenvolvedor da Esri UC que o Anacondas será incorporado no ArcGIS 10.5. Eu recomendaria apenas instalar os módulos necessários, caso contrário, pode ficar confuso.
dgrubman
Parece que este é o caso dos requisitos de sistema
#

Respostas:

13

Você está usando uma versão de 64 bits do Python na instalação do Anaconda e o Python do ArcMap é de 32 bits. Você precisará instalar alguma versão do ArcGIS de 64 bits (Geoprocessamento em segundo plano de 64 bits ou ArcGIS for Server) e apontar para isso ou instalar uma instância do Anaconda de 32 bits e tentar novamente. Veja a página de downloads e obtenha o instalador de 32 bits.

Jason Scheirer
fonte
33

Este tutorial mostra como configurar o ambiente conda para trabalhar com o ArcGIS 10.4 e o ArcGIS Pro 1.3.

Fluxo de trabalho para configurar o Anaconda com ArcGIS 10.4

  • Instale o Anaconda sem sujar o ambiente do Windows (caminhos, registro) para quebrar a pilha python da Esri
  • Configure o Anaconda com os complementos específicos que você deseja e
  • Configure o Python do ArcGIS para que ele tenha conhecimento do conteúdo apropriado do Anaconda.

1) Instale o Anaconda para todos os usuários

  1. Vá para http://continuum.io/downloads
  2. Baixe a versão de 32 bits do Anaconda (Python 2.7)
  3. Nas caixas de diálogo de instalação:
    • Selecione instalar para todos os usuários
    • Instalar em uma pasta por padrão (C: \ Anaconda2)
    • IMPORTANTE : Para evitar a quebra do ArcGIS (ou outro software), desmarque as caixas de seleção (a) torne o Anaconda o Python padrão e (b) adicione o Python do Anaconda ao PATH.
  4. Vá para Iniciar> Todos os Programas (aplicativos)> Anaconda2 (32 bits)> Anaconda Prompt. Clique com o botão direito, execute como administrador

2) Configure um ambiente Anaconda para uso com ArcGIS

  1. Encontre as versões do numpy e do matplotlib que o ArcGIS está usando.
Abra o ArcMap e sua janela Python e digite estes comandos:

    • >>> import sys, numpy, matplotlib
    • >>> print (sys.version, numpy .__ versão__, matplotlib .__ versão__)
    • ('2.7.10 (padrão, 23 de maio de 2015, 09:40:32) [MSC v.1500 de 32 bits (Intel)]', '1.9.2', '1.4.3')
  1. Crie um ambiente Anaconda compatível com ArcGIS
    • Acesse o prompt de comando do Anaconda (Iniciar> Todos os programas (aplicativos)> Anaconda2 (32 bits), escolha " Prompt do Anaconda "), clique com o botão direito do mouse em Executar como administrador .
    • Digite (dependendo da versão do ArcGIS, estou usando o ArcGIS 10.4 como exemplo aqui):
    • "conda create -n arc104 python = 2.7.10 numpy = 1.9.2 matplotlib = 1.4.3 executando xlrd xlwt pandas scipy ipython ipython-notebook ipython-qtconsole"
    • Digite y para continuar.
    • O comando conda do Anaconda configurará um subdiretório de ambiente, ex: "C: \ Anaconda2 \ envs \ arc104", instalando os pacotes baixados nele.
  2. Teste o ambiente virtual
    • No prompt de comando do Anaconda, digite: ativar arc104
    • Tipo: lista conda . Você pode ver a lista de pacotes instalados.
  3. Adicione mais pacotes
    • Você pode adicionar mais pacotes usando a instalação conda , mas certifique-se de especificar números de versão para eles que não alterem a versão do python ou numpy do ambiente (ou o ArcGIS não poderá mais usar esse ambiente).
    • Vamos adicionar o módulo Python Spatial Analysis Library ( pysal ).
    • Digite o seguinte comando no prompt do Anaconda : "conda install -n arc104 python = 2.7.10 numpy = 1.9.2 matplotlib = 1.4.3 pysal"

3) Configure o ArcGIS para ver o Anaconda e vice-versa

  1. Anaconda Python para ArcPy
    • Copie o arquivo Desktop10.4.pth para a pasta de pacotes de sites do ambiente Anaconda:
    • De: C: \ Python27 \ ArcGIS10.4 \ Lib \ pacotes de sites \ Desktop10.4.pth
    • Para: C: \ Anaconda2 \ envs \ arc104 \ Lib \ pacotes de sites \ Desktop10.4.pth
  2. Arcpy para Anaconda Python
    • Crie um arquivo zconda.pth (caminho) com o conteúdo "C: \ Anaconda \ envs \ arc104 \ lib \ site-packages".
    • Em seguida, copie o zconda.pth para C: \ Python27 \ ArcGIS10.4 \ Lib \ site-packages
  3. Teste no ArcMap
    • Como usuário comum, inicie o ArcMap, abra a janela do Python
    • digite "importar pysal"
    • digite "pysal". Um menu pop-up com uma lista de funções fornecidas pelo pysal é um bom sinal de que a instalação foi bem-sucedida.
  4. Testando em PyCharm
    • Inicie o PyCharm, em File \ Settings…, escolha Project e Project Interpreter
    • Ignore a lista suspensa do Project Interpreter e clique no botão de engrenagem para Adicionar local e, no navegador de arquivos, escolha C: \ Anaconda2 \ envs \ arc104 \ python.exe
    • Para executar seu script, clique com o botão direito do mouse na janela Projeto e escolha Executar ou Depurar
    • Reinicie o PyCharm para o console Python para usar o ambiente arc104.

Fluxo de trabalho para configurar o Anaconda com ArcGIS Pro 1.3

1) Crie um ambiente Anaconda compatível com o ArcGIS Pro

  • Copie a pasta arcgispro-py3 de C: \ Arquivos de programas \ ArcGIS \ Pro \ bin \ Python \ envs e cole em C: \ Anaconda2 \ envs
  • Renomeie a pasta copiada arcgispro-py3 em C: \ Anaconda2 \ envs para arcpro

2) Teste o ambiente virtual

  • No prompt de comando do Anaconda, digite: ativar arcpro
  • Tipo: lista conda . Você pode ver a lista de pacotes instalados

3) Adicione mais pacotes

  • Vamos adicionar o módulo Python Spatial Analysis Library ( pysal ).
  • Digite o seguinte comando no prompt do Anaconda : "conda install pysal"

4) Configure o ArcGIS para ver o Anaconda e vice-versa

  • Anaconda Python para ArcPy
    • Edite o arquivo ArcGISPro.pth (caminho) em "C: \ Anaconda2 \ envs \ arcpro \ lib \ site-packages".
    • Altere o caminho relativo do ArcPy para C: \ Arquivos de programas \ ArcGIS \ Pro \ Resources \ ArcPy
    • Altere o caminho relativo do ArcToolBox para C: \ Arquivos de programas \ ArcGIS \ Pro \ Resources \ ArcToolBox
  • Arcpy para Anaconda Python
    • Crie um arquivo zconda.pth (caminho) com o conteúdo "C: \ Anaconda2 \ envs \ arcpro \ lib \ site-packages".
    • Em seguida, copie o zconda.pth para C: \ Arquivos de programas \ ArcGIS \ Pro \ bin \ Python \ envs \ arcgispro-py3 \ lib \ site-packages
  • Teste no ArcGIS Pro
    • Inicie o ArcGIS Pro, abra a janela do Python
    • digite "importar pysal"
    • digite "pysal". Um menu pop-up com uma lista de funções fornecidas pelo pysal é um bom sinal de que a instalação foi bem-sucedida.
  •  Testando em PyCharm
    • Inicie o PyCharm, em File \ Settings…, escolha Project e Project Interpreter
    • Ignore a lista suspensa do Project Interpreter e clique no botão de engrenagem para Adicionar local e, no navegador de arquivos, escolha C: \ Anaconda2 \ envs \ arcpro \ python.exe
    • Para executar seu script, clique com o botão direito do mouse na janela Projeto e escolha Executar ou Depurar
    • Reinicie o PyCharm para o Python Console para usar o ambiente arcpro.

Referências

  1. https://goo.gl/pOyLA9
Qiusheng Wu
fonte
Tudo isso funciona muito bem, os pacotes Anaconda estão dentro do ArcGIS e vice-versa, mas ainda tenho um problema. Se eu tentar fazer uma importação arcpy e, em seguida, arcpy. Funciona bem em uma classe de recurso de banco de dados de arquivos, mas aparentemente não se conecta ao Oracle (por exemplo, arcpy.Describe (r'C: \ temp \ password_saved_sde_file.sde \ EDGIS.ElectricDataset \ EDGIS.Anchor ')).
Phil Penn
7

Para resolver isso, navegue até a pasta python27 \ Lib \ site-packages, a minha estava localizada em "C: \ Python27 \ ArcGIS10.1 \ Lib \ site-packages" e localize o arquivo Desktop10.1.pth.

No meu sistema, o problema foi resolvido simplesmente copiando o arquivo Desktop10.1.pth para "C: \ AppData \ Local \ Continuum \ Anaconda \ Lib \ site-packages".

Se você estiver executando o Anaconda de 64 bits, receberá um erro diferente ao tentar importar o arcpy porque o ArcGIS executa 32 bits. Portanto, você deve certificar-se de ter o Anaconda de 32 bits instalado em vez de 64 bits, para que as coisas correspondam ao ArcGIS. Depois que o arquivo é copiado e você possui o Anaconda de 32 bits, o import arcpy deve funcionar.

WxCZar
fonte
3

Se você instalou o Arc antes do Anaconda, o IDLE padrão, a janela Python (no Arc) e o console Python sempre serão puxados dos módulos instalados pelo Arc, ou seja, C:\Python27\ArcGIS <version>\Lib(e / ou) Lib\site-packages. Se você possui pacotes instalados com o Anaconda que deseja usar com a instalação do Python pela Arc, precisará gravar arquivos .pth para compartilhar entre as instalações do Python ( leitura leve ).

Por exemplo, eu queria usar o pacote pandas do meu material Anaconda. Criei um arquivo de texto na pasta de pacotes de sites do meu Arc chamada anaconda.pthcom o conteúdo de C:\Anaconda\Lib\site-packagespara vincular a instalação do Arc aos pacotes de sites do Anaconda. Agora, eu poderia import pandasdentro do Python instalado pelo Arc sem um ImportError. (Se você tiver problemas com o numpy, renomeie a numpypasta instalada pelo Arc para _numpy).

Por outro lado, copie e cole o Desktop<version>.ptharquivo da pasta pacotes de sites do Arc no seu Anaconda (que especifica a localização real do pacote arcpy) e crie outro arquivo .pth que aponte para a pasta de pacotes de sites do Arc no seu Anaconda. você pode usar os pacotes Arc do Spyder se você o usar.

MapImbibery
fonte
2

Outro usuário fez uma pergunta semelhante no github, que pode ser do seu interesse. Aqui está a essência do que um usuário recomendou para importar dados de preenchimento automático do arco para anaconda:

DamnWidget comentou em 26 de fevereiro https://github.com/DamnWidget/anaconda/issues/284

Abra um PowerShell ou CMD.exe e vá para a instalação do anaconda na pasta Packages em seu Sublime Text 3% APPDATA%. CD na pasta anaconda_lib e inicie um interpretador Python interativo nesse caminho.

Copie e cole o seguinte:

import jedi

print(jedi.Script('import arcpy; arcpy.').completions())

Então (pelo menos para mim), ele retornou um monte de coisas na janela do cmd e parecia ter funcionado. Reabri o Sublime Text e ele puxa o preenchimento automático para funções do arco-íris.

Meu problema é que leva mais de 5 segundos para carregá-los, parece que nunca mantemos o arcpy carregado na memória por mais de alguns segundos. Mas essa é uma questão diferente, eu acho ...

clavicus
fonte
1

Você deve apenas instalar a versão de 32 bits do Anaconda.

mmann1123
fonte