如何创建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”)。主要

我用python编写的程序有以下目录结构:

\code\
    main.py
    config.py
    \module_folder1\
        script1.1.py
\data\
    data_file1
    data_file2 
My
config.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)
    (我想)对吗?听起来像是我期待的那种解决方案。