項目結構:定位項目specifc配置文件
/lib/modules/mod1.py
/mod2.py
/subdir1/subdir2/mod3.py
/configs/config.yaml
mod3.py
進口mod2.py
。 mod2.py
進口mod1.py
。 mod1.py
使用os.getcwd()
加載相對路徑爲mod2.py
的配置文件。
的問題是,當mod3.py
進口mod2.py
,mod1.py
嘗試從路徑相對於加載配置文件,以mod3.py
(即/subdir1/subdir2/configs/config.yaml代替/configs/config.yaml)--this的當然,這是行不通的。
我相信明白爲什麼這不起作用(os.getcwd()
獲取原始執行文件的路徑)。
我怎樣才能解決這個問題,使mod1.py
將使用相對mod2.py
的路徑,即使mod2.py
從mod3.py
進口?
也許重寫代碼以避免從相對位置加載文件將是最好的選擇,但是如果你必須,看看'mod2 .__ file__' ... – twalberg
問題是'mod2.py'的位置會因項目而異,但項目中的文件將始終遵循相對路徑。在這個例子中,'mod1.py'是從項目結構中加載的 - 但是如果是從項目結構之外的位置加載的,mod2.py'的位置將用於建立config.yaml的位置。 – user2487593