导入模块时相对路径中断

问题描述

我有一个这样的工作目录:

somedirectory/
    project/
        config/
            key.txt
        project/
            core.py
            sub/
                mycaller.py

我在mycaller.py中有一个通过以下方式读取key.txt的类:

with open('../../config/key.txt','r') as arq:
    arq.read()

但是,当我将类导入到core.py时,相对路径将相对于那个文件设置,因此它不是读取.../project/config/key.txt,而是尝试读取{{ 1}},它不存在,因此会引发错误

我虽然可以绕过.../somedirectory/config/key.txt之类的函数,但是由于该函数只是将相对格式转换为绝对格式,所以它失败了。我还尝试在os.path.abspath上设置mypath变量,但是模块的导入始终采用对mycaller.py的相对引用。

如何在core.py中设置调用方,以便可以使用相对路径表示法,并且即使导入了open,解释器仍将始终使该关系对mycaller.py起作用?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)