python 包包含的相對路徑問題

需要注意的是文件夾被python解釋器視作package需要滿足兩個條件:

  • 1.文件夾中必須有__init__.py文件,該文件可以爲空,但必須存在該文件。
  • 2.不能作爲頂層模塊來執行該文件夾中的py文件(即不能作爲主函數的入口)。

所以,當用.. 或 ../..返回上級去導入的時候,如果到了程序的入口就會報錯:ValueError: attempted relative import beyond top-level package
這是因爲第2條的原因,也就是相對導入的時候不能返回到頂層目錄去導入,否則會報錯。
所以,用絕對導入的人比較多,相對導入中一個點(同級導入)用的比較多。

相對路徑  ..表示上一層,...表示上上層,依次類推。

但是不 能無限的,當到達啓動文件的那一層的時候就會報錯 ValueError: attempted relative import beyond top-level package

這個可以參看上面的規則。

所以比較方便的是直接添加SYSPATH,然後全部按啓動文件的那個目錄爲根目錄往下包含就好了,不用相對路徑了

import sys
import os
curpath = os.path.abspath(os.path.dirname(__file__)
sys.path.append(curpath)

這篇文章解釋的比較清楚

https://www.cnblogs.com/schips/p/12148092.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章