alembic — пример использования ресурса пакета в качестве script_location

Я пытаюсь включить миграции Alembic как часть дистрибутива пакета Python. Поскольку этот дистрибутив будет установлен, каталог сценариев Alembic (который содержит миграции) в конечном итоге будет скопирован в папки пакетов python. В таком случае, как я могу указать Alembic, где найти этот каталог?

В документации Alembic сказано, что каталог migration можно указать в файле config.ini как ссылку на пакет:

  • script_location — это расположение среды Alembic. Обычно он указывается как местоположение в файловой системе, относительное или абсолютное. Если местоположение является относительным путем, оно интерпретируется как относительно текущего каталога.

(отрезать)

Для поддержки приложений, которые упаковывают себя в файлы .egg, значение также может быть указано как ресурс пакета, и в этом случае для поиска файла используется resource_filename() (новое в версии 0.2.2). Любой неабсолютный URI, содержащий двоеточие, интерпретируется здесь как имя ресурса, а не простое имя файла.

В документации нет дополнительной информации или примеров.

Кто-нибудь успешно реализовал это? Как именно вы превращаете свою папку migration scripting_folder в «ресурс пакета»? Как же тогда сказать перегонному кубу, где его найти?


person David H    schedule 11.09.2014    source источник


Ответы (1)


Например:

script_location = mypackage:somewhere/inside/it

Это требует, чтобы вы включили миграции в свой дистрибутив: вы должны посмотреть свой файл MANIFEST.in и т. д.

person manu    schedule 09.04.2015