路径是相对于 当前工作目录的 ,该 目录 通常是您运行程序的目录(但是当前目录可以由您的程序[或模块]更改,并且通常 不是 您程序文件的目录)。
一个解决方案包括通过
__file__Python解释器在
foo.py以下代码中为您创建的变量自动计算文件的路径:
import osconfig.read(os.path.join(os.path.dirname(__file__), 'conf', 'config.cfg'))
说明:
__file__每个程序(模块)的变量都包含其路径(可能是相对于当前目录的路径,在加载时,我想-
我在Python文档中找不到结论性的东西),例如,当
foo.py从其自身导入时目录)。
这样,无论当前工作目录如何,以及无论您将软件包放在何处,导入都能正常工作。
PS:旁注:
__all__ = ["config.cfg"]不是您想要的:它告诉Python在执行操作时要导入哪些符号(变量,函数)
from confimport *。应该删除它。
PPS:如果代码在加载配置读取模块的时间与您读取配置文件的时间之间更改了当前的工作目录,那么您要先存储配置文件的 绝对
路径(使用
os.path.abspath()),然后再更改当前目录,因此即使在当前目录更改后也可以找到配置。



