我正在开发的库具有以下文件结构,该库公开了keras模型:
relevancy (repo)
relevancy (package repo)
data
model.h5
tokenizer.pickle
test
__init__.py
test_model.py
model.py
__init__.py
__init__.py
setup.py
该库基本上会加载经过预先训练的tokenizer.pickle
和model.h5
并根据输入数据进行预测。
在model.py
中,我有一个函数,其中包含以下代码,用于加载令牌生成器和模型:
def load()
with open("data/tokenizer.pickle", "rb") as f:
tokenizer = pickle.load(f)
model = keras.models.load_model("data/model.h5")
return tokenizer, model
在test_model.py
中,我在测试中调用此函数。
然后,如果我在python setup.py test
下调用/relevancy (repo)
,则会收到错误消息,提示找不到data/tokenizer.pickle
。显然,亲戚是造成问题的原因。
我应该如何设置目录或路径,以便总能正确加载令牌生成器和模型?
答案 0 :(得分:1)
如果您需要访问存储在软件包中的数据文件,请考虑使用pkg_resources module。
然后在model.py
中,您可以执行以下操作:
filename = pkg_resources.resource_filename(__name__, 'data/tokenizer.pickle')
with open(filename, 'rb') as f:
...