Python使用import as设置别名后导入子模块报ModuleNotFoundError
问题产生原因
Python 导入系统的检索逻辑仅识别官方注册的模块名,import os as my_os 本质是将加载完成的 os 模块对象赋值给当前代码作用域内的 my_os 变量,这个别名仅在当前代码的变量命名空间中生效,不会被注册到Python的全局模块索引里。
当你执行 import my_os.path 时,Python导入系统会直接在模块搜索路径中查找名为 my_os 的模块,自然找不到对应文件,触发 ModuleNotFoundError 报错。而直接用 import os.path 时,导入系统可以匹配到已注册的 os 模块,因此可以正常加载子模块。
解决方案
- 直接通过别名访问子模块,无需额外导入:
os模块加载完成后,path子模块已经作为属性挂载到os模块对象上,你直接用my_os.path调用对应方法即可,不需要单独写import语句。
示例代码:import os as my_os # 直接使用别名访问子模块即可正常运行 print(my_os.path.abspath(".")) - 若需要单独给子模块设置别名,使用
from导入语法:
示例代码:from os import path as my_os_path print(my_os_path.exists("."))
内容的提问来源于stack exchange,提问作者kkaaii
相关产品推荐
相关产品推荐

