如何创建python配置文件,其中定义了相对路径,但当其他目录中的脚本导入配置时,路径是否正确?
我用python编写的程序有以下目录结构:如何创建python配置文件,其中定义了相对路径,但当其他目录中的脚本导入配置时,路径是否正确?,python,module,relative-path,Python,Module,Relative Path,我用python编写的程序有以下目录结构: \code\ main.py config.py \module_folder1\ script1.1.py \data\ data_file1 data_file2 Myconfig.py是一组由用户设置的全局变量,或者通常是一直固定的。尤其是config.py定义了两个数据文件的路径变量,类似于path1=os.path.abspath(“../data/data\u file1”)。主要
\code\
main.py
config.py
\module_folder1\
script1.1.py
\data\
data_file1
data_file2
Myconfig.py
是一组由用户设置的全局变量,或者通常是一直固定的。尤其是config.py
定义了两个数据文件的路径变量,类似于path1=os.path.abspath(“../data/data\u file1”)
。主要用途是运行main.py
,它导入config
(以及我编写的其他模块),一切正常
但有时我需要自己运行script1.1.py
。好的,没问题。我可以在script1.1
中添加通常的,如果
并且我可以导入config
。但是我得到的是path1=“../code/data/data\u file1”
,它并不存在。我认为,由于路径是在config.py
中创建的,因此路径将与config.py
所在的位置相关,但它不是
所以问题是,我如何能有一个定义相对路径的中心配置文件,这样我就可以将配置文件导入到不同目录中的脚本中,并且路径仍然正确
我应该提到,代码repo将在多台机器之间共享,因此硬编码绝对路径不是一个选项
config.py
所在的目录中知道文件的正确相对路径config.py
所在目录的正确相对路径(在您的情况下,。
)os.path.join('..',config.path\u repative\u to\u config)
(不确定是谁将此作为注释发布的,然后将其删除,但似乎有效,因此我将其作为答案发布)。诀窍是在配置文件中使用os.path.dirname(\u file\u)
,它给出了配置文件的目录(/code/
)无论导入配置的脚本位于何处
具体来说,要回答这个问题,请在配置文件中定义
path1 = os.path.abspath(os.path.join(os.path.join(os.path.join( os.path.dirname(__file__) , '..'), 'data' ), 'data_file1' ) )
这会有用的。好主意。似乎应该有一个更好的
os.getcwd()
函数——一个导入到不同目录的函数。我回复了一条注释,但现在它似乎不见了。建议在配置文件中使用os.path.dirname(\uu文件\uu)
(我想)对吗?听起来像是我期待的那种解决方案。