這一篇應該是解釋的比較清楚:
關鍵點是: 頂層的module運行時, 不能用相對導入, 即使頂層有init文件也不行. 因運行文件也在頂層, 看不到init的作用.
問題原因
不能在一個包里運行一個腳本文件,頂層的腳本文件不能用相對導入。
如果要將一個包作為一個腳本運行的話,需要將運行的腳本文件更名為__main__.py,然后再該包文件夾外運行該包的命令:
python -m testpackage
還有一種解決辦法是在包外創建一個腳本文件,然后將包的內容導入到該腳本中。
參見:
這總是一個很麻煩的問題, 和pycharm的版本也有關系. 看來python在這一塊做的不是很好. 碰到過相關問題很多次了.