让ArcPy与Anaconda合作?


23

我想在回答一步一步的方向,以遵循“ 如何Python安装在ArcGIS分离 ”,但无法找到路径的文件,DTBGGP64.pthC:\Python27\ArcGIS10.2\Lib\site-packages

有人遇到过类似的问题吗?

我想知道是否有一种解决方法,包括一个告诉Anaconda arcpy安装在哪里的路径文件?我试图创建一个包含以下文本的.pth文件:

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

并将其保存到C:\Anaconda\Lib\site-packages(也就是说,如果确实是所有软件包都保存在这里),但出现以下错误:

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.

我在Windows 7(64位)平台上运行conda 3.7-py27。Anaconda安装在中C:\Anaconda,ArcMap安装在中C:\ArcGIS\Desktop10.2。是否有其他解决方案可以使arcpy与Anaconda一起使用?我只希望能够从Powershell运行我的脚本。


只是要确保-当您在cmd提示符下键入“ python”时-它会回显什么版本/安装?(例如arcgis或anaconda?)-哎呀,刚刚看到这有点过时了。问题解决了。
fluidmotion 2015年

我从Esri UC的开发人员那里听说,Anacondas将内置到ArcGIS 10.5中。我建议您仅安装所需的模块,否则可能会造成混乱。
dgrubman '16

看起来是这样^是ArcGIS 10.5系统要求
WxCZar

Answers:


13

您在Anaconda安装中使用的是64位版本的Python,而ArcMap的Python是32位。您需要安装一些64位ArcGIS构建(64位背景地理处理或ArcGIS for Server)并指向该构建,或者安装32位Anaconda实例,然后重试。请参阅下载页面并获取32位安装程序。


33

本教程向您展示如何设置conda环境以与ArcGIS 10.4和ArcGIS Pro 1.3一起使用。

使用ArcGIS 10.4设置Anaconda的工作流程

  • 安装Anaconda而不破坏Windows环境(路径,注册表)以破坏Esri的python堆栈
  • 使用所需的特定加载项配置Anaconda,并
  • 配置ArcGIS的Python,以便它知道适当的Anaconda内容。

1)为所有用户安装Anaconda

  1. 转到http://continuum.io/downloads
  2. 下载Anaconda 的32位版本(Python 2.7)
  3. 在安装对话框中:
    • 选择“为所有用户安装”
    • 默认情况下安装到文件夹(C:\ Anaconda2)
    • 重要说明:为避免破坏ArcGIS(或其他软件),请取消选中以下复选框:(a)将Anaconda设置为默认Python,并(b)将Anaconda的Python添加到PATH。
  4. 转到开始>所有程序(应用程序)> Anaconda2(32位)> Anaconda提示。右键单击,以管理员身份运行

2)配置Anaconda环境以用于ArcGIS

  1. 查找ArcGIS正在使用的numpy和matplotlib的版本。
打开ArcMap及其Python窗口,然后输入以下命令:

    • >>>导入sys,numpy,matplotlib
    • >>>打印(sys.version,numpy .__ version __,matplotlib .__ version__)
    • ('2.7.10(默认值,2015年5月23日,09:40:32)[MSC v.1500 32位(Intel)]','1.9.2','1.4.3')
  1. 创建与ArcGIS兼容的Anaconda环境
    • 转到Anaconda命令提示符(开始>所有程序(应用程序)> Anaconda2(32位),选择“ Anaconda提示符 ”),右键单击,以管理员身份运行
    • 类型(取决于ArcGIS版本,此处我以ArcGIS 10.4为例):
    • “ conda创建-n arc104 python = 2.7.10 numpy = 1.9.2 matplotlib = 1.4.3 pyparsing xlrd xlwt熊猫scipy ipython ipython-notebook ipython-qtconsole”
    • 输入y继续。
    • 然后,Anaconda的conda命令将建立一个环境子目录,例如:“ C:\ Anaconda2 \ envs \ arc104”,将下载的软件包安装到其中。
  2. 测试虚拟环境
    • 在Anaconda命令提示符下,键入:activate arc104
    • 类型:conda list。您可以看到已安装软件包的列表。
  3. 添加更多包
    • 您可以使用conda install添加更多软件包,但请确保为这些软件包指定版本号,这些版本号不会更改环境的python或numpy版本(否则ArcGIS将无法再使用该环境)。
    • 让我们添加Python空间分析库(pysal)模块。
    • Anaconda提示符处键入以下命令:“ conda install -n arc104 python = 2.7.10 numpy = 1.9.2 matplotlib = 1.4.3 pysal”

3)配置ArcGIS以查看Anaconda,反之亦然

  1. Anaconda Python至ArcPy
    • Desktop10.4.pth文件复制到Anaconda环境site-packages文件夹中:
    • 来自:C:\ Python27 \ ArcGIS10.4 \ Lib \ site-packages \ Desktop10.4.pth
    • 到:C:\ Anaconda2 \ envs \ arc104 \ Lib \ site-packages \ Desktop10.4.pth
  2. Arcpy至Anaconda Python
    • 创建一个包含内容“ C:\ Anaconda \ envs \ arc104 \ lib \ site-packages” 的zconda.pth(路径)文件。
    • 然后将zconda.pth复制到C:\ Python27 \ ArcGIS10.4 \ Lib \ site-packages
  3. 在ArcMap中进行测试
    • 以常规用户身份启动ArcMap,打开Python窗口
    • 输入“导入pysal”
    • 输入“ pysal”。弹出菜单列出了pysal提供的功能,这是安装成功的一个很好的信号。
  4. 在PyCharm中测试
    • 启动PyCharm,在“文件\设置”中,选择“项目”,然后选择“项目解释器”
    • 忽略Project Interpreter的下拉列表,然后单击cog按钮以添加Local,然后在文件浏览器中选择C:\ Anaconda2 \ envs \ arc104 \ python.exe
    • 要运行脚本,请在“项目”窗口中右键单击它,然后选择“运行”或“调试”
    • 重新启动Python控制台的PyCharm以使用arc104环境。

使用ArcGIS Pro 1.3设置Anaconda的工作流程

1)创建与ArcGIS Pro兼容的Anaconda环境

  • 从C:\ Program Files \ ArcGIS \ Pro \ bin \ Python \ envs 复制文件夹arcgispro-py3并粘贴到C:\ Anaconda2 \ envs
  • 将C:\ Anaconda2 \ envs中复制的文件夹arcgispro-py3重命名为arcpro

2)测试虚拟环境

  • 在Anaconda命令提示符下,键入:Activate arcpro
  • 类型:conda list。您可以看到已安装软件包的列表

3)添加更多软件包

  • 让我们添加Python空间分析库(pysal)模块。
  • Anaconda提示符处键入以下命令:“ conda install pysal”

4)配置ArcGIS以查看Anaconda,反之亦然

  • Anaconda Python至ArcPy
    • 在“ C:\ Anaconda2 \ envs \ arcpro \ lib \ site-packages”中编辑ArcGISPro.pth(路径)文件。
    • 将相对ArcPy路径更改为C:\ Program Files \ ArcGIS \ Pro \ Resources \ ArcPy
    • 将相对的ArcToolBox路径更改为C:\ Program Files \ ArcGIS \ Pro \ Resources \ ArcToolBox
  • Arcpy至Anaconda Python
    • 创建一个包含内容“ C:\ Anaconda2 \ envs \ arcpro \ lib \ site-packages” 的zconda.pth(路径)文件。
    • 然后将zconda.pth复制到C:\ Program Files \ ArcGIS \ Pro \ bin \ Python \ envs \ arcgispro-py3 \ lib \ site-packages
  • 在ArcGIS Pro中进行测试
    • 启动ArcGIS Pro,打开Python窗口
    • 输入“导入pysal”
    • 输入“ pysal”。弹出菜单列出了pysal提供的功能,这是安装成功的一个很好的信号。
  •  在PyCharm中测试
    • 启动PyCharm,在“文件\设置”中,选择“项目”,然后选择“项目解释器”
    • 忽略Project Interpreter的下拉列表,然后单击cog按钮以添加Local,然后在文件浏览器中选择C:\ Anaconda2 \ envs \ arcpro \ python.exe
    • 要运行脚本,请在“项目”窗口中右键单击它,然后选择“运行”或“调试”
    • 重新启动Python控制台的PyCharm以使用arcpro环境。

参考文献

  1. https://goo.gl/pOyLA9

这一切都很好,Anaconda软件包在ArcGIS内,反之亦然,但我还有一个问题。如果我尝试先执行导入arcpy,然后执行arcpy。在Anaconda中基于RDBMS(Oracle)的要素类上进行描述,那么我会得到IOError:...不存在。在filegeodatabase要素类上工作正常,但似乎无法连接到Oracle(例如arcpy.Describe(r'C:\ temp \ password_saved_sde_file.sde \ EDGIS.ElectricDataset \ EDGIS.Anchor'))。
菲尔·彭

7

为了解决这个问题,浏览到python27 \ Lib \ site-packages文件夹,我的文件夹位于“ C:\ Python27 \ ArcGIS10.1 \ Lib \ site-packages”下,然后找到文件Desktop10.1.pth。

在我的系统上,只需将Desktop10.1.pth文件复制到“ C:\ AppData \ Local \ Continuum \ Anaconda \ Lib \ site-packages”即可解决该问题。

如果您运行的是Anaconda 64位,则由于ArcGIS是32位运行的,因此当您尝试导入arcpy时会遇到其他错误。因此,必须确保安装的Anaconda是32位而不是64位,以便与ArcGIS相匹配。复制文件后,如果您具有Anaconda 32位,则可以导入arcpy。


3

如果在Anaconda之前安装了Arc,则默认IDLE,Python窗口(在Arc中)和Python控制台将始终从安装了Arc的模块(即C:\Python27\ArcGIS <version>\Lib(和/或))中提取Lib\site-packages。如果您已经安装了与Anaconda一起安装的软件包,并且要与Arc的Python安装一起使用,则需要编写.pth文件,以便在Python安装之间共享(轻读)。

例如,我想使用Anaconda中的pandas软件包。我在Arc的site-packages文件夹中创建了一个文本文件,anaconda.pth其中包含的内容,C:\Anaconda\Lib\site-packages以将Arc-install链接到Anaconda站点包。现在,我可以import pandas在没有ImportError的情况下在Arc安装的Python内部。(如果您在使用numpy时遇到问题,请将Arc-installed numpy文件夹重命名为_numpy)。

在另一面,将Desktop<version>.pth文件从Arc site-packages文件夹复制并粘贴到Anaconda的文件中(该文件指定arcpy包的实际位置),然后制作另一个.pth文件,指向Anaconda文件夹中的Arc site-packages文件夹。您可以使用Spyder提供的Arc软件包。


2

另一个用户在github上问了类似的问题,您可能对此很感兴趣。这是一个用户建议为anaconda导入arcpy自动完成数据的要点:

DamnWidget于2月26日发表评论 https://github.com/DamnWidget/anaconda/issues/284

打开PowerShell或CMD.exe,然后转到Sublime Text 3%APPDATA%中Packages文件夹下的anaconda安装。将CD放入anaconda_lib文件夹,然后在该路径上启动交互式Python解释器。

复制并粘贴以下内容:

import jedi

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

然后(至少对我来说),它在cmd窗口中返回了一堆东西,并且似乎已经起作用。我重新打开了Sublime Text,它为arcpy函数提供了自动完成功能。

我的问题是加载它们需要5秒钟以上的时间,似乎永远不会将arcpy加载到内存中超过几秒钟。但是我认为那是一个不同的问题...


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.