python打开配置文件位于包内

时间:2014-08-13 01:04:02

标签: python config setuptools

我正在尝试分发一个包含非python文件的python包。该文件位于mypackge / config.yml中,我还在manifest.in中添加了它(recursive-include mypackage * .yml)。当我运行python setup.py install时,它显然已添加到egg中,但我不知道如何访问代码中的文件。当我退出setup.py所在的目录时,open(os.path.join('mypackage', 'config.yml'))将停止工作。

有没有办法安全地访问egg中的文件,比如Java的getResourceAsStream方法?

1 个答案:

答案 0 :(得分:5)

是的,您正在寻找的是pkg_resources,这些日子与setuptools捆绑在一起,因此通常会被使用。具体做法是:

import pkg_resources
my_data = pkg_resources.resource_string(__name__, "config.yml")

请注意,这会返回字节。您甚至可以通过替换__name__来获取其他软件包中的资源。