Python2与Python3调用脚本差异及ArcGIS Desktop运行hypy模块报错求助
Python 2环境hypy模块导入报错修复方案
核心原因
Python2强制要求包目录下存在__init__.py文件才能识别为可导入模块,Python3.3及以上版本取消了该限制,这是代码在Python3.8正常、Python2报错的核心原因
可行解决方案按优先级排序如下:
- 方案1:添加包标识文件
在E:\Python\hypy路径下新建空白文件,命名为__init__.py,完成后重启Python2运行环境重新执行原代码即可,原导入写法不需要修改。 - 方案2:修改导入路径写法
如果添加__init__.py后仍然报错,调整原代码的导入部分:
该写法跳过了导入hypy包的步骤,直接把htj.py所在路径加入环境变量后导入htj模块,适配性更强。import sys import numpy as np # 原代码漏写numpy导入,必须补充 sys.path.append(r'E:\Python\hypy') import htj tD = np.array([[1, 2, 3],[4, 5, 6]]) x = 0.1 sD, _ = htj.dls_array(np.array([x]), tD) - 方案3:兼容性校验
如果上述方案都无效,检查htj.py文件是否存在Python3专属语法:- 替换所有Python3格式的print语句(
print(xxx)改为print xxx,或开头加from __future__ import print_function) - 移除f字符串、类型注解等Python2不支持的语法
- 检查numpy版本兼容性,Python2支持的最高numpy版本为1.16.6,确保当前环境numpy版本不高于该值
- 替换所有Python3格式的print语句(
注:你提到的返回值接收符
_在Python2中完全支持,不需要做任何修改。
内容的提问来源于stack exchange,提问作者Raghwendra
相关产品推荐
相关产品推荐

