【笔记13】完美解决了!关于python的相对导入和绝对导入


最近在学习别人写的程序,有位大神把其他经典算法都实现了,baseline包全弄好了,我真是兴冲冲,提起袖子膜拜大神,没想到环境都build好了,在引自己的各种模块时频频报错,深知是引用的问题,Google了半天都没弄好,最后经过耐心探索 在不小心把自己的.bashrc环境删掉还重配了conda之后,总结了怎么解决引用问题的方法。

解决方案

先把出现报错的解决方案放在前面:
检查哪种错误:

ValueError: Attempted relative import in non-package
说明存在相对导入语句的模块,不能直接运行,把相对导入改成绝对引用。

No module named ‘…’
说明路径不对,找不到模块。

如果是绝对导入,一个模块只能导入自身的子模块或和它的顶层模块同级别的模块及其子模块
如果是相对导入,一个模块必须有包结构且只能导入它的顶层模块内部的模块

  1. 找不到模块时,先看看有没有__init__.py文件在该包里,告诉导入指令我包在这。
  2. 如果要把相对导入改为绝对导入,from __future__ import absolute_import(仅禁用隐式相对导入),Python2.x 缺省为相对路径导入,Python3.x 缺省为绝对路径导入。
  3. 万能法。直接把该文件夹看作一个workspace
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值