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