最近在尝试在arcengine10.1+python3 调用arcgispro工具箱快速稳定的计算能力,本以为挺容易,结果花费小半天的时间才解决,想记录一下。
平时会使用arcengine通过进程方式调用desktop下的arcpy,这样比arcengine直接调用gp工具运行稳定,因为都是基于python2.7和32位运行环境,平时混着用工具也可正常运行。
切换到arcgispro, 通过进程正常调用脚本本来也挺正常,但由于之前的业务代码会存在先用arcengine 的gp工具处理数据的前置 操作,导致后面进程调用arcgispro脚本会存在如下问题:
File “C:\Users\Administrator\Desktop\testprocesspython\testprocesspython\bin\Debug\Intersect_analysis.py”, line 10, in
import arcpy
File “C:\Program Files\ArcGIS\Pro\Resources\ArcPy\arcpy_init_.py”, line 77, in
from arcpy.geoprocessing import gp
File “C:\Program Files\ArcGIS\Pro\Resources\ArcPy\arcpy\geoprocessing_init_.py”, line 14, in
from ._base import *
File “C:\Program Files\ArcGIS\Pro\Resources\ArcPy\arcpy\geoprocessing_base.py”, line 14, in
import arcgisscripting
ImportError: DLL load failed while importing arcgisscripting: %1 不是有效的 Win32 应用程序。
看着像是X86 和X64类库不兼容问题,但如果跳过执行arncnegin的gp后直接运行pro脚本又能正常跑,挠了会头,挠啊挠挠挠挠。。。。。
想了想,是不是加载模块有问题,于是把两种情况下sys系统环境下的默认加载模块路径打印出来对比了下差异
嗯,果然如此,无法正常运行的python脚本系统变量多了engine相关的python类库,试试在运行时把它删掉,删掉后果然可以跑了
嗯,虽然不是很优雅,但解决问题了,后续碰到问题再想办法解决吧,记录一下,挠挠头。