我有代码读取某个模块内的__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
用作拉链包时,读取返回FileNotFoundError: ... No such file or directory: ... package.zip\\src\\properties\\config.yaml
。
有没有办法解决这个问题,我是否需要处理压缩包的情况,我是否应该避免在包代码中加载文件...?
我尝试了广泛的谷歌搜索,但我一无所获。
先感谢您。
我能用pkgutil.get_data
来解决它!
import src
a = pkgutil.get_data('src', 'properties/config.yaml')
config = yaml.load(a)
我们来了!