Answers:
您可以reload
在python中使用内置函数来自动重新加载模块。您可以执行以下操作:
import mymodule
def hook():
reload(mymodule)
mymodule.myfunction()
hook()
ArcMap调用的位置是什么,是两次mymodule
调用之间正在编辑的模块。您可能需要进行编辑sys.path
以包括要编辑的模块的路径,以确保import mymodule
不会失败。或将目录包含在中site-packages
(可能使用python setup.py develop
)。
根据@ blah238的建议,以下脚本
保存到包含makeaddin.py的目录:
import os
#Location of ESRIRegAddIn.exe
esri = "C:/Program Files (x86)/Common Files/ArcGIS/bin/ESRIRegAddIn.exe"
cwd = os.getcwd()
mapdoc = <path to mxd>
#Close ArcMap if it is open
try: os.system("TASKKILL /F /IM ArcMap.exe")
except: pass
#Create ESRI Add-in file
os.system(os.path.join(cwd, "makeaddin.py"))
#Silently install Add-in file. The name of the file is based on folder it's located in.
os.system('"{0}" {1} /s'.format(esri, os.path.split(cwd)[-1] + ".esriaddin"))
#Open test map document.
os.system(mapdoc)
arcmap = "C:/Program Files (x86)/ArcGIS/Desktop10.3/bin/ArcMap.exe"
和添加Map = '"{0}" {1} /s'.format(arcmap, mapdoc)
到上面。然后os.system(Map)
将在不成功的地方成功os.system(mapdoc)
。
我通常使用两种方法:一种是,对于您使用的实际上只是地理处理的任何工具,允许将它们导入,然后您可以设置一个交互式Python会话,并reload(mymodule)
按照提及的方式进行操作以包括最新的更改(或设置IPython中的autoreload)。如果您只是对Python工具箱进行更改,则可以通过在目录视图中右键单击该工具箱并单击“刷新”来重新加载该工具箱。
对于确实需要用户在GUI中进行交互的代码,我使用以下批处理脚本来加快过程:
@echo off
echo building...
python makeaddin.py
echo installing...
start myaddin.esriaddin
echo load ArcMap...
start %HOMEDRIVE%%HOMEPATH%\Documents\ArcGIS\myaddin.mxd
myaddin.mxd具有用于特定项目的数据层和上下文。这将同时触发插件安装和ArcMap,但是我通常可以比ArcGIS启动更快地单击“安装插件”按钮。或者,您可以pause
在最后一个命令之前添加以在启动ArcGIS之前等待输入。
ESRIRegAddIn.exe
与该/s
开关一起使用, 以静默方式安装外接程序。我的机器上ESRIRegAddIn的路径是C:\Program Files (x86)\Common Files\ArcGIS\bin
。