项目结构:定位项目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