我有一些代码可以读取某个模块内__init__.py
文件中的配置文件。假设我有一个这样的结构:
dir/
setup.py
src/
__init__.py
properties/
config.yaml
module/
__init__.py ---> this file reads src/properties/config.yaml
要读取的代码是这样的:
with open(os.path.join(_ROOT, os.path.normpath('src/properties/config.yaml'))) as f:
config = yaml.load(f)
_ROOT
在顶部src/__init__.py
中的定义如下:
ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
基本上是_ROOT=dir
。
除了将src
用作zip包(读取返回FileNotFoundError: ... No such file or directory: ... package.zip\\src\\properties\\config.yaml
的zip包之外),这在每个平台上都像一个魅力。
有没有解决此问题的方法,压缩包时是否需要处理这种情况,我应该避免将文件加载到打包代码中吗...?
我对此进行了广泛的Google搜索,但未找到任何结果。
谢谢。
答案 0 :(得分:0)
我能够用pkgutil.get_data
解决它!
import src
a = pkgutil.get_data('src', 'properties/config.yaml')
config = yaml.load(a)
等等!