Python 包:我可以从调用它的项目目录中查找 config/yml 文件吗?

Python package: Can I look for config/yml file from project directory which called it?

我正在编写一个 Python 包,其中包含我们团队特有的大量实用类型函数,以便他们可以安装、导入和使用它们。其中一些功能访问需要身份验证的服务,因此在 READ Me 文件中,我指示他们在其项目目录中创建一个 YAML 文件,其中包含他们的凭据。

当他们导入这个包并从中调用函数时,包是否有办法在调用它的目录中查找这个 YAML 文件?还是他们需要自己解析文件并将凭据作为参数传递给函数本身?

__file__ 变量包含 Python 程序的名称或路径。我们可以使用 os.path 子模块中的函数来使用它来获取文件(在我下面的示例中称为 password.yml)。

import os.path
prog = __file__
directory = os.path.dirname(os.path.abspath(prog))
print(os.path.join(directory, 'password.yml'))

abspath 将名称转换为绝对文件(从文件系统根目录开始)。 dirname 删除最后一个(文件名)组件,留下目录,join 使用适合您平台的分隔符将目录路径和文件名放在一起('/' 对于大多数操作系统,'\' Windows).