Python unittest: каталоги и пути к файлам - PullRequest
0 голосов
/ 31 октября 2018

У меня есть следующая файловая структура для библиотеки, которую я разрабатываю, которая предоставляет модель 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 не найден. По-видимому, проблема связана с родственником.

Как мне настроить мой каталог или пути, чтобы токенайзер и модель всегда могли быть загружены правильно?

1 Ответ

0 голосов
/ 31 октября 2018

Если вам нужен доступ к файлам данных, хранящимся в вашем пакете, рассмотрите возможность использования модуля pkg_resources .

Тогда в model.py вы можете сделать что-то вроде этого:

filename = pkg_resources.resource_filename(__name__, 'data/tokenizer.pickle')
with open(filename, 'rb') as f:
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...