这一篇应该是解释的比较清楚:
关键点是: 顶层的module运行时, 不能用相对导入, 即使顶层有init文件也不行. 因运行文件也在顶层, 看不到init的作用.
问题原因
不能在一个包里运行一个脚本文件,顶层的脚本文件不能用相对导入。
如果要将一个包作为一个脚本运行的话,需要将运行的脚本文件更名为__main__.py,然后再该包文件夹外运行该包的命令:
python -m testpackage
还有一种解决办法是在包外创建一个脚本文件,然后将包的内容导入到该脚本中。
参见:
这总是一个很麻烦的问题, 和pycharm的版本也有关系. 看来python在这一块做的不是很好. 碰到过相关问题很多次了.