python:Attempted relative import in non-package


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'

 


免責聲明!

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



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