span8
span4
将使用Esri的arcpy模块的Python脚本添加到您的工作空间中是扩展workbench功能的好方法。由于Python是ArcGIS的默认脚本语言,如果您的机器上有有效的ArcGIS许可证,那么您可以在Python脚本中使用arcpy模块中的许多地理处理函数。您还可以使用ModelBuilder从您的模型创建Python脚本。
但是,当您运行一个试图使用arcpy模块的工作区时,用户可能会遇到以下错误消息:
Python的例外:无模块名为ArcPy中
下面提供了一些故障排除建议,可能有助于解决无法在FME中导入arcpy的问题。
为了使用arcpy模块,您需要使用由ArcGIS客户端安装的Python解释器。为此,在FME Workbench中,转到Tools > FME选项并单击Translation。在Python解释器下,您将看到一个使用定制Python解释器的选项。单击browse按钮将允许您导航到所需的解释器。
如果使用32位FME,到ArcGIS Python解释器的路径将类似于以下:
C:\Windows\System32\ python27.dll
如果使用64位FME,到ArcGIS Python解释器的路径将类似如下:
C:\Windows\SysWOW64\ python27.dll
*需要注意的是,如果使用64位FME和ArcGIS(包括arcpy),您还需要Esri的64位后台地理处理模块。但是,我们强烈建议在使用arcpy时使用32位FME,因为32位FME和ArcGIS(一个32位应用程序)之间的兼容性更加无缝,并且提供了更多的arcpy功能。记得:如果您将ArcGIS升级到新版本,请确保您也升级了Esri 64位后台地理处理模块。更多关于arcpy和64位可以在这里找到ESRI博客。
Python解释器的更详细的解释可以在这里找到:
在Python空闲窗口中,输入以下命令:
>>>导入系统>>>打印系统
这将打印出系统路径并显示系统试图访问的Python库/目录。
如果您的系统上安装了ArcGIS 64位后台地理处理,那么您的系统上也将安装Python 2.7 64位库(即C: \ Python27 \ ArcGISx6410.4)。这是什么意思的是,64位库将最有可能首先出现在你的系统路径。尽管罕见,存在混乱,可能会发生与FME尝试所需要的32位库时加载64位库的实例。如果你认为这是可能会导致您的ArcPy中的错误,你可以尝试从系统中卸载64位后台地理处理模块。如果这不起作用,你可以尝试系统路径尝试导入ArcPy中模块之前,附加在你的Python脚本所需要的32位库(见建议#3)。在最后的努力,你可以尝试手动编辑系统路径变量;但是,不建议这样做。
由于躲避上面,可能是进口ArcPy中的错误,因为ArcPy中库还没有被添加到PATH环境变量。为了解决这个问题,找到下找到DesktopXX.X.pth文件C:\ Python27 \ ArcGISXX.X \ LIB \站点包(其中ArcGISXX.X引用您的ArcGIS安装的版本),并在其内容中指定的文件位置追加到“路径”环境变量。根据你的环境,你可能还需要添加C:\ Python27 \ ArcGISXX.X \ LIB \站点包和C:\\ Python27 \\ \\ ArcGISXX.X LIB为好。
一个示例脚本将开始如下:
进口SYS sys.path.append( “C:\\ Python27 \\ \\ ArcGISXX.X库\\站点包”)sys.path.append(R'C:\程序文件(x86)\ ArcGIS的\ DesktopXX。X \ ArcPy中 ')sys.path.append(R'C:\程序文件(x86)\ ArcGIS的\ DesktopXX.X \ ArcToolbox中\脚本')sys.path.append(R'C:\程序文件(x86)\ArcGIS的\ DesktopXX.X \ BIN')sys.path.append( “C:\\ Python27 \\ \\ ArcGISXX.X LIB”)导入ArcPy中
如果你已经安装了Python的单独安装(同一版本ArcGIS的 - 即Python 2.7版)安装在ArcGIS客户端后,你会无意中覆盖安装Python解释器(python27.dll)是FME需要与ArcPy中进行通信的ArcGIS。
一种可能的方式,以避免覆盖Python解释是将通过从系统默认文件夹的ArcGIS安装python27.dll(即C:\的Windows \ Syswow64资料或C:\ Windows \ System32下)到安装在ArcGIS蟒可执行的文件夹(即C:\ Python27 \ ArcGISXX.X)。发生的Python的任何其他安装前必须这样做。然后人们会在一个不同的安装文件夹安装Python 2.7的独立版本(即不是C:\ Python27)。在FME,你这时就需要点到ArcGIS的python27.dll通过设置该路径作为自定义解释移动。在你的Python脚本,你会导入ArcPy中模块之前,需要在系统路径追加必要的ArcPy中的库(见建议#3)。
请注意,如果你卸载独立版本,Python解释ArcGIS的可能不再工作 - 您可能会收到一个“无模块命名的网站”的错误。它可能需要手动从系统路径删除旧的解释的遗迹,也可以重新安装的Python版本无关(再次 - 不是在C:\ Python27文件夹)。
*注 - 也可以同样适用于ArcGIS的专业和Python 3.4。
当一切都失败了,卸载所有独立的Python安装,然后卸载并重新安装的ArcGIS客户端可以恢复你的Python实例,并允许FME使用ArcPy中的模块。
嗨,
我尝试添加一个关机脚本,其中包括导入ArcPy中。即使我尝试以上所有流程,仍然无法正常工作。以下错误FME的回报。
前提条件未能在.. \框架\发动机\ stfloginternal.cpp:499。表达:instance_ = nullptr
为了解决这个问题,我发现了一个诀窍,如果我在启动脚本中添加导入ArcPy中,把相同的代码到关机脚本,FME将运行关机没有任何错误的脚本成功。
希望这将有助于其他程序员。
干杯,
艾米莉
©2019安全亚搏在线软件公司法律