如何从同目录Python文件正确导入两个变量?排查NameError报错
解决Python导入模块变量时的NameError问题
我来帮你快速定位问题所在!你遇到的NameError完全是因为导入方式和后续调用不匹配导致的,咱们一步步理清楚:
问题根源
你写的导入语句是:
from save_state_mod import event , save_missing_weight
这种写法是直接把save_state_mod里的event和save_missing_weight两个变量导入到当前代码的命名空间里了,相当于这两个变量已经“直接存在”在你的当前文件中,不需要再通过save_state_mod.xxx的方式去调用。
而你后续又写了:
smw = save_state_mod.save_missing_weight ev = save_state_mod.event
这时候Python根本找不到save_state_mod这个名称(因为你没导入整个模块),自然就抛出NameError了。
两种解决办法
办法一:直接使用导入的变量
既然已经把变量导入到当前命名空间,直接用变量名即可:
from save_state_mod import event , save_missing_weight smw = save_missing_weight # 直接用变量名 ev = event # 直接用变量名
办法二:导入整个模块
如果你更习惯通过模块名来访问变量,可以改成导入整个模块:
import save_state_mod # 导入整个模块 smw = save_state_mod.save_missing_weight # 用模块名.变量名访问 ev = save_state_mod.event # 用模块名.变量名访问
额外说明
你提到添加了__init__.py文件,其实在Python 3.3及以上版本中,同一目录下的模块不需要这个文件也能正常导入(Python默认支持命名空间包),所以这个文件不是解决当前问题的关键哦。
内容的提问来源于stack exchange,提问作者MBENKI
相关产品推荐
相关产品推荐

