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

你可能感兴趣的:(python相对导入注意事项)