问题引入
在写python脚本时,想将两个脚本共有的配置抽出来,形成配置文件,在运行脚本时读取配置文件。
脚本工具目录结构:
programoperater
__init__.py
autorun_startprogram.py ——起服务脚本
autorun_checkstart.py ——检查启动脚本
programsetting.py ——抽取的配置文件
在脚本中通过相对路径import配置文件:
from . import programsetting
在服务器用自己安装的python3.7.3报错:

用服务器自带的python2.7.5执行报错:

问题分析,即python包机制
官方解释:Relative imports use a module’s name attribute to determine that module’s position in the package hierarchy.
即:python import package都是根据每个module的__name__来实现的。
通过“from . import programsettingg”,programsetting就获得了“programoperater.programe”的__name__属性。前提是该programoperater被python解

这篇博客探讨了在Python中遇到的Relative import错误,分析了问题的原因:当直接运行的脚本被视为top-level script时,其__name__属性设为__main__,导致relative import失败。解决方案是调整目录结构并使用绝对导入。文章还引用了Python官方文档对包机制的解释。
最低0.47元/天 解锁文章
1850

被折叠的 条评论
为什么被折叠?



