problem:Attempted relative import in non-package
所謂相對路徑其實就是相對於當前module的路徑,但如果直接執行腳本,這個module的name就是“__main__”, 而不是module原來的name, 這樣相對路徑也就不是原來的相對路徑了,導入就會失敗,出現錯誤“ValueError: Attempted relative import in non-package”
solve:
方法1:把src目錄加入到sys.path里去
方法2:把整個工程myproject寫成package放進site-packages
然后這樣引用
from myproject.XXX.YYY import XXX
方法3:使用python -m 執行
例如myproject.mypackage.module1
如果你直接執行
python myproject/mypackage/module1.py
因為是直接執行的,對於module1.py不知道相對路徑是什么,可采用
python -m myproject.mypackage.module1執行。
相當於
import myproject
import mypackage
import module1
即:import myproject.mypackage.module1這種形式的絕對引用
並且會設置 __package__ = 'myproject.mypackage'
