相對導入中Attempted relative import in non-package問題


這一篇應該是解釋的比較清楚:

http://stackoverflow.com/questions/14664313/attempted-relative-import-in-non-package-although-packages-with-init-py-in

 

關鍵點是: 頂層的module運行時, 不能用相對導入, 即使頂層有init文件也不行.  因運行文件也在頂層, 看不到init的作用.

 

 

問題原因

不能在一個包里運行一個腳本文件,頂層的腳本文件不能用相對導入。
如果要將一個包作為一個腳本運行的話,需要將運行的腳本文件更名為__main__.py,然后再該包文件夾外運行該包的命令:

python -m testpackage

還有一種解決辦法是在包外創建一個腳本文件,然后將包的內容導入到該腳本中。

 

參見:

http://blog.jasonding.top/2015/02/03/Python/%E3%80%90python%E3%80%91%E7%9B%B8%E5%AF%B9%E5%AF%BC%E5%85%A5%E4%B8%ADAttempted-relative-import-in-non-package%E9%97%AE%E9%A2%98/

 

這總是一個很麻煩的問題, 和pycharm的版本也有關系. 看來python在這一塊做的不是很好.  碰到過相關問題很多次了. 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM