Faire fonctionner ArcPy avec Anaconda?

23

J'essaie de suivre les instructions pas à pas dans la réponse à " comment séparer l'installation de Python avec ArcGIS ", mais je ne trouve pas le fichier de chemin,, DTBGGP64.pthdans C:\Python27\ArcGIS10.2\Lib\site-packages.

Quelqu'un a-t-il rencontré un problème similaire?

Je me demande s'il y a une solution de contournement en incluant un fichier de chemin qui indique à Anaconda où arcpy est installé? J'ai essayé de créer un fichier .pth contenant le texte suivant:

# .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

et enregistré (c'est-à C:\Anaconda\Lib\site-packages-dire, si c'est bien là que tous les packages sont enregistrés) mais j'obtiens l'erreur suivante:

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.

J'utilise conda 3.7-py27 sur une plate-forme Windows 7 (64 bits). Anaconda est installé dans C:\Anacondaet ArcMap est installé dans C:\ArcGIS\Desktop10.2. Existe-t-il une solution alternative pour que Arcpy fonctionne avec Anaconda? Je veux juste pouvoir exécuter mes scripts à partir de Powershell.

user26750
la source
juste pour être sûr - lorsque vous tapez 'python' à une invite cmd - quelle version / installation résonne-t-elle? (c'est-à-dire arcgis ou anaconda?) - oups vient de voir que c'est un peu daté. problème résolu maintenant.
fluidmotion
Un développeur d'Esri UC m'a dit qu'Anacondas serait intégré à ArcGIS 10.5. Je recommanderais simplement d'installer les modules dont vous avez besoin, sinon cela pourrait devenir compliqué.
dgrubman
Il ressemble à ceci ^ est le cas de la
configuration

Réponses:

13

Vous utilisez une version 64 bits de Python dans votre installation Anaconda et le Python d'ArcMap est 32 bits. Vous devrez installer une version ArcGIS 64 bits (géotraitement en arrière-plan 64 bits ou ArcGIS for Server) et pointer vers cela à la place, ou installer une instance Anaconda 32 bits à la place et réessayer. Consultez la page des téléchargements et obtenez le programme d'installation 32 bits.

Jason Scheirer
la source
33

Ce didacticiel vous montre comment configurer l'environnement conda pour qu'il fonctionne avec ArcGIS 10.4 et ArcGIS Pro 1.3.

Flux de travail pour configurer Anaconda avec ArcGIS 10.4

  • Installez Anaconda sans encrasser l'environnement Windows (chemins d'accès, registre) pour briser la pile python d'Esri
  • Configurez Anaconda avec les modules complémentaires particuliers que vous souhaitez, et
  • Configurez Python d'ArcGIS pour qu'il soit au courant du contenu Anaconda approprié.

1) Installez Anaconda pour tous les utilisateurs

  1. Accédez à http://continuum.io/downloads
  2. Téléchargez la version 32 bits d'Anaconda (Python 2.7)
  3. Dans les boîtes de dialogue d'installation:
    • Sélectionnez l'installation pour tous les utilisateurs
    • Installer dans un dossier par défaut (C: \ Anaconda2)
    • IMPORTANT : pour éviter de casser ArcGIS (ou un autre logiciel), décochez les cases (a) faites d'Anaconda le Python par défaut et (b) ajoutez le Python d'Anaconda au CHEMIN.
  4. Accédez à Démarrer> Tous les programmes (applications)> Anaconda2 (32 bits)> Anaconda Prompt. Clic droit, exécuter en tant qu'administrateur

2) Configurer un environnement Anaconda pour une utilisation avec ArcGIS

  1. Recherchez les versions de numpy et matplotlib qu'ArcGIS utilise.
Ouvrez ArcMap et sa fenêtre Python et entrez ces commandes:

    • >>> importer sys, numpy, matplotlib
    • >>> print (sys.version, numpy .__ version__, matplotlib .__ version__)
    • ('2.7.10 (par défaut, 23 mai 2015, 09:40:32) [MSC v.1500 32 bits (Intel)]', '1.9.2', '1.4.3')
  1. Créer un environnement Anaconda compatible avec ArcGIS
    • Accédez à l'invite de commande Anaconda (Démarrer> Tous les programmes (applications)> Anaconda2 (32 bits), choisissez " Anaconda Prompt "), cliquez avec le bouton droit de la souris, Exécuter en tant qu'administrateur .
    • Tapez (selon la version d'ArcGIS, j'utilise ArcGIS 10.4 comme exemple ici):
    • "conda create -n arc104 python = 2.7.10 numpy = 1.9.2 matplotlib = 1.4.3 pyparsing xlrd xlwt pandas scipy ipython ipython-notebook ipython-qtconsole"
    • Entrez y pour continuer.
    • La commande conda d'Anaconda créera alors un sous-répertoire d'environnement, ex: "C: \ Anaconda2 \ envs \ arc104", en y installant les packages téléchargés.
  2. Testez l'environnement virtuel
    • À l'invite de commande Anaconda, tapez: activate arc104
    • Type: liste de conda . Vous pouvez voir la liste des packages installés.
  3. Ajouter plus de packages
    • Vous pouvez ajouter d'autres packages à l'aide de l' installation de conda , mais assurez-vous de spécifier des numéros de version pour ceux-ci qui ne changeront pas la version de l'environnement de python ou numpy (ou ArcGIS ne pourra plus utiliser cet environnement).
    • Ajoutons le module Python Spatial Analysis Library ( pysal ).
    • Tapez la commande suivante à l' invite Anaconda : "conda install -n arc104 python = 2.7.10 numpy = 1.9.2 matplotlib = 1.4.3 pysal"

3) Configurer ArcGIS pour voir Anaconda et vice versa

  1. Anaconda Python à ArcPy
    • Copiez le fichier Desktop10.4.pth dans le dossier site-packages de l'environnement Anaconda:
    • De: C: \ Python27 \ ArcGIS10.4 \ Lib \ site-packages \ Desktop10.4.pth
    • À: C: \ Anaconda2 \ envs \ arc104 \ Lib \ site-packages \ Desktop10.4.pth
  2. Arcpy à Anaconda Python
    • Créez un fichier zconda.pth (chemin) contenant le contenu "C: \ Anaconda \ envs \ arc104 \ lib \ site-packages".
    • Copiez ensuite zconda.pth dans C: \ Python27 \ ArcGIS10.4 \ Lib \ site-packages
  3. Test dans ArcMap
    • En tant qu'utilisateur régulier, démarrez ArcMap, ouvrez la fenêtre Python
    • tapez "import pysal"
    • tapez "pysal". Un menu contextuel avec une liste des fonctions fournies par Pysal est un assez bon signe que l'installation a réussi.
  4. Test dans PyCharm
    • Démarrez PyCharm, dans File \ Settings…, choisissez Project puis Project Interpreter
    • Ignorez la liste déroulante pour Project Interpreter, cliquez sur le bouton en forme de roue dentée pour ajouter local et dans le navigateur de fichiers, choisissez C: \ Anaconda2 \ envs \ arc104 \ python.exe
    • Pour exécuter votre script, cliquez dessus avec le bouton droit dans la fenêtre Projet et choisissez Exécuter ou Déboguer
    • Redémarrez PyCharm pour la console Python pour utiliser l'environnement arc104.

Flux de travail pour configurer Anaconda avec ArcGIS Pro 1.3

1) Créez un environnement Anaconda compatible avec ArcGIS Pro

  • Copiez le dossier arcgispro-py3 depuis C: \ Program Files \ ArcGIS \ Pro \ bin \ Python \ envs et collez-le dans C: \ Anaconda2 \ envs
  • Renommez le dossier copié arcgispro-py3 dans C: \ Anaconda2 \ envs en arcpro

2) Testez l'environnement virtuel

  • À l'invite de commande Anaconda, tapez: activer arcpro
  • Type: liste de conda . Vous pouvez voir la liste des packages installés

3) Ajouter plus de packages

  • Ajoutons le module Python Spatial Analysis Library ( pysal ).
  • Tapez la commande suivante à l' invite Anaconda : "conda install pysal"

4) Configurer ArcGIS pour voir Anaconda et vice versa

  • Anaconda Python à ArcPy
    • Modifiez le fichier ArcGISPro.pth (chemin) dans "C: \ Anaconda2 \ envs \ arcpro \ lib \ site-packages".
    • Remplacez le chemin ArcPy relatif par C: \ Program Files \ ArcGIS \ Pro \ Resources \ ArcPy
    • Remplacez le chemin d'accès ArcToolBox relatif par C: \ Program Files \ ArcGIS \ Pro \ Resources \ ArcToolBox
  • Arcpy à Anaconda Python
    • Créez un fichier zconda.pth (chemin) contenant le contenu "C: \ Anaconda2 \ envs \ arcpro \ lib \ site-packages".
    • Copiez ensuite zconda.pth dans C: \ Program Files \ ArcGIS \ Pro \ bin \ Python \ envs \ arcgispro-py3 \ lib \ site-packages
  • Test dans ArcGIS Pro
    • Démarrez ArcGIS Pro, ouvrez la fenêtre Python
    • tapez "import pysal"
    • tapez "pysal". Un menu contextuel avec une liste des fonctions fournies par Pysal est un assez bon signe que l'installation a réussi.
  •  Test dans PyCharm
    • Démarrez PyCharm, dans File \ Settings…, choisissez Project puis Project Interpreter
    • Ignorez la liste déroulante pour Project Interpreter, cliquez sur le bouton en forme de roue dentée pour ajouter local et dans le navigateur de fichiers, choisissez C: \ Anaconda2 \ envs \ arcpro \ python.exe
    • Pour exécuter votre script, cliquez dessus avec le bouton droit dans la fenêtre Projet et choisissez Exécuter ou Déboguer
    • Redémarrez PyCharm pour la console Python pour utiliser l'environnement arcpro.

Les références

  1. https://goo.gl/pOyLA9
Qiusheng Wu
la source
Tout cela fonctionne très bien, les packages Anaconda sont à l'intérieur d'ArcGIS et vice-versa, mais j'ai un problème restant. Si j'essaie de faire une importation arcpy puis arcpy.Describe sur une classe de fonctionnalités basée sur RDBMS (Oracle) dans Anaconda, alors j'obtiens IOError: ... n'existe pas. Fonctionne très bien sur une classe de fichiers de base de données mais ne se connecte apparemment pas à Oracle (par exemple arcpy.Describe (r'C: \ temp \ password_saved_sde_file.sde \ EDGIS.ElectricDataset \ EDGIS.Anchor ')).
Phil Penn
7

Pour résoudre ce problème, accédez au dossier python27 \ Lib \ site-packages, le mien se trouvait sous "C: \ Python27 \ ArcGIS10.1 \ Lib \ site-packages" et recherchez le fichier Desktop10.1.pth.

Sur mon système, le problème a été résolu en copiant simplement le fichier Desktop10.1.pth dans "C: \ AppData \ Local \ Continuum \ Anaconda \ Lib \ site-packages".

Si vous exécutez Anaconda 64 bits, vous obtiendrez une erreur différente lorsque vous essayez d'importer arcpy car ArcGIS s'exécute en 32 bits. Par conséquent, vous devez vous assurer que vous avez installé Anaconda 32 bits plutôt que 64 bits afin que les choses correspondent à ArcGIS. Une fois le fichier copié et que vous avez Anaconda 32 bits, l'importation arcpy devrait fonctionner.

WxCZar
la source
3

Si vous avez installé Arc avant Anaconda, votre console IDLE, Python Window (dans Arc) et Python par défaut tirera toujours de vos modules installés sur Arc, c'est-à-dire C:\Python27\ArcGIS <version>\Lib(et / ou) Lib\site-packages. Si vous avez installé des packages avec Anaconda que vous souhaitez utiliser avec l'installation de Python par Arc, vous devrez écrire des fichiers .pth afin de partager entre les installations de Python ( lecture légère ).

Par exemple, je voulais utiliser le package pandas de mes trucs Anaconda. J'ai créé un fichier texte dans le dossier des packages de site de mon Arc appelé anaconda.pthavec le contenu de C:\Anaconda\Lib\site-packagespour lier l'installation d'Arc aux packages de site d'Anaconda. Maintenant, je pouvais à l' import pandasintérieur du Python installé sur Arc sans ImportError. (Si vous avez des problèmes avec numpy, renommez le numpydossier installé par Arc en _numpy).

Sur le revers, copiez et collez le Desktop<version>.pthfichier du dossier Arc site-packages dans votre Anaconda (qui spécifie l'emplacement réel du package arcpy) et créez un autre fichier .pth qui pointe vers votre dossier Arc site-packages dans votre Anaconda afin vous pouvez utiliser les packages Arc de Spyder si vous l'utilisez.

MapImbibery
la source
2

Un autre utilisateur a posé une question similaire sur github, qui pourrait vous intéresser. Voici l'essentiel de ce qu'un utilisateur a recommandé d'importer des données de saisie semi-automatique arcpy pour anaconda:

DamnWidget a commenté le 26 février https://github.com/DamnWidget/anaconda/issues/284

Ouvrez un PowerShell ou CMD.exe et accédez à votre installation anaconda dans le dossier Packages de votre Sublime Text 3% APPDATA%. CD dans le dossier anaconda_lib et démarrez un interpréteur Python interactif sur ce chemin.

Copiez et collez les éléments suivants:

import jedi

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

Puis (au moins pour moi), il a renvoyé un tas de trucs dans la fenêtre cmd, et cela semblait avoir fonctionné. J'ai rouvert Sublime Text et il tire la saisie semi-automatique pour les fonctions arcpy.

Mon problème est qu'il faut plus de 5 secondes pour les charger, il semble ne jamais garder arcpy chargé en mémoire pendant plus de quelques secondes. Mais c'est un problème différent, je pense ...

clavicus
la source
1

Vous devez simplement installer la version 32 bits d'Anaconda.

mmann1123
la source