You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10下Python修改后仍运行旧版代码非Git问题求助

问题描述
  • 修复代码时已将原调用.extent属性的逻辑替换为调用.coordinates()方法,对应旧代码段已删除,但程序运行时仍执行已删除的旧逻辑触发报错,报错中触发错误的行即为已删除的旧代码
  • 已尝试更换IDE、重启设备,问题未解决
  • 运行环境:Windows 10,代码未纳入Git版本管理,基于ArcGIS Pro内置Python环境运行,代码存储在SMB网络共享盘
  • 完整报错信息如下:
Traceback (most recent call last):

  File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\PGE_Pro_Py3\lib\site-packages\arcgis\geometry\_types.py", line 183, in __getattr__
    return self.__getitem__(name)
  File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\PGE_Pro_Py3\lib\site-packages\arcgis\geometry\_types.py", line 190, in __getitem__
    return dict.__getitem__(self, k)
KeyError: 'extent'
 
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "\\rcnas01-smb\NRM_DataTeam\e_Scripts\~DS\Defensible_space_pre_inspection_form_export_2022_20211029.py", line 192, in <module>
    map_server_response = temp.site_map(item_webmap, 'Asset Centroid', "ASSET_NAME = '{}'".format(which_one))
  File "\\rcnas01-smb\NRM_DataTeam\e_Scripts\template_fxn.py", line 154, in site_map
    extent = sdf_zoomer.spatial.bbox.buffer(400).extent
  File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\PGE_Pro_Py3\lib\site-packages\arcgis\geometry\_types.py", line 186, in __getattr__

    "'%s' object has no attribute '%s'" % (type(self).__name__, name)

AttributeError: 'Geometry' object has no attribute 'extent'
排查与解决步骤

按优先级从高到低排查,90%以上的同类问题都是前两个原因导致的:

  • 确认你修改的是实际被加载的目标文件
    从报错堆栈看,你运行的主脚本在\\rcnas01-smb\NRM_DataTeam\e_Scripts\~DS\目录下,但实际调用的site_map函数来自上一级目录的\\rcnas01-smb\NRM_DataTeam\e_Scripts\template_fxn.py。绝大多数人遇到这个问题都是改了其他位置的同名文件(比如~DS目录下的template_fxn.py副本),根本没动到实际被import加载的源文件。
    直接在主脚本最开头加两行代码,运行后打印的路径就是程序实际读取的模块路径,打开这个路径下的文件核对第154行内容:
    import temp
    print(temp.__file__)
    
  • 清除缓存,解决旧字节码/网络共享缓存不刷新问题
    1. 完全关闭ArcGIS Pro、所有运行相关脚本的Python进程,避免文件被锁定无法更新
    2. 遍历脚本所在的所有目录,删除全部.pyc后缀的字节码文件,以及所有名为__pycache__的缓存文件夹
    3. 如果是在ArcGIS Pro的脚本工具中运行代码,打开Pro选项-地理处理设置页,清除地理处理工具缓存
    4. 由于你的代码存在SMB网络共享盘上,Windows默认会开启SMB文件缓存,容易出现本地修改后服务端文件未同步/本地读取旧缓存的问题,可以把整个脚本目录复制到本地磁盘(非网络映射盘)后运行测试,排除共享盘同步问题
  • 排查模块重名冲突
    检查ArcGIS Pro对应Python环境的site-packages目录下,是否存在同名的template_fxn.py或者打包过的同名模块,Python导入模块时会优先搜索系统路径、site-packages路径,再搜索脚本所在目录,如果site-packages下留了旧版本的同名模块,你修改脚本目录下的文件不会生效。
  • 检查代码拼写错误
    你提到替换后的写法是调用.cooridnates(),注意这个拼写是错误的,ArcGIS Geometry对象获取坐标的正确方法名是.coordinates(),避免改完旧问题又触发新的属性不存在报错。

内容的提问来源于stack exchange,提问作者Crash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:36:36