我正在尝试分发一个包含非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
方法?
答案 0 :(得分:5)
是的,您正在寻找的是pkg_resources
,这些日子与setuptools
捆绑在一起,因此通常会被使用。具体做法是:
import pkg_resources
my_data = pkg_resources.resource_string(__name__, "config.yml")
请注意,这会返回字节。您甚至可以通过替换__name__
来获取其他软件包中的资源。