python相对导入注意事项

最简单直接的办法就是:

  • 直接把要导入的 package 复制到 site-package文件夹下!

  • 或者把 package 所在的路径加到 python 的搜索路径里面!

上面两种应该是最好的办法

pycharm 中运行脚本时,相对导入可以直接使用

但是如果系统直接运行python脚本
from .. import XXX (上一级目录的package)
from . import XXX (当前工作目录的package)
可能会有
ValueError: attempted relative import beyond top-level package
SystemError: Parent module '' not loaded, cannot perform relative import
这样的错误

产生错误的原因:

  • 没有 __init__.py 文件:相对导入时,package 所对应的文件夹必须被 python解释器 视作 package,
    而不是普通文件夹,也就是说文件夹中必须要有 __init__.py 文件

  • 当前级别的目录中运行了py脚本:该文件夹不能作为主函数的入口(顶层模块)来执行该文件夹中的py文件,想执行的话可以把主函数放在该文件夹的上一级目录中(不过这样似乎不利于脚本的分类整理,如果想把一类的脚本放到一个文件夹下的话,这个文件夹就又成了主函数的入口?所以建议直接用开头的两个方法完成导入)

在"from YY import XX"这样的代码中,无论是XX还是YY,只要被python解释器视作package,就会首先调用该package的init.py文件。如果都是package,则调用顺序是YY,XX

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 参考来源:https://www.cnblogs.com/ArsenalfanInECNU/p/5346751.h...
    形式主义_5adc阅读 3,890评论 0 1
  • Python相对导入机制详解 - laike9m's blog you cannot execute a file...
    leemingeer阅读 3,345评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,768评论 19 139
  • 身体是革命的本钱,胃肠又是身体众多零部件中重要的一环,我们该抽出时间来问候问候他们,而不能为了节省时间,胡乱应付自...
    快乐_b1c5阅读 2,713评论 0 0
  • 见山临海堂阅读 2,187评论 0 0