Python相对引用报错ImportError: attempted relative import with no known parent package

本文介绍了在Python中遇到相对导入错误`ImportError: attempted relative import with no known parent package`的问题及其解决方案。错误通常发生在尝试在非包结构下使用相对路径导入时。解决方法包括直接使用绝对导入或者调整项目结构以满足包的定义。对于`attempted relative import beyond top-level package`错误,同样提供了相应的导入修正建议。
摘要由CSDN通过智能技术生成


 

└── Project
    ├── dir1
    │   ├── __init__.py
    │   └── module1.py     
    │   └── module1_2.py     
    ├── dir2
    │  
    │   └── module2.py
    ├── file_a.py   
    └── main.py

1. 在main.py 中想要 使用  from . import  file_a 的时候, 报错信息 ImportError: attempted relative import with no known parent package

报错信息的意思是尝试使用相对路劲导入但找不到已知的父级包。一般来说,当你尝试在一个能够运行的.py文件内使用相对路径导入,就会发生此报错。报错的原因在于,python的相对路径导入实际上需要借助当前文件的父级包路径来实现,即通过判断一个.py文件的__name__和__package__属性来得到关于父级包的信息,当在一个能够运行的.py应用文件中,有:

if __name__ == '__main__':

这就在文件中引入了main入口,此时文件的__name__属性为‘__main__’而__package__属性为None,如果在这样的文件中使用相对路径引入,解释器就找不到父级包的任何信息,因此报错。

Python貌似有个坑爹的设定,当前执行文件的目录不会被当做package。

为了验证问题, 可以在 import 代码所在文件 添加以下代码

print('__file__={0:<35} | __name__={1:<20} | 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曼车斯基

如果内容对你有用,赏杯咖啡吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值