alembic - 使用包资源作为script_location的示例
我正在尝试将Alembic迁移文件作为一个Python包的一部分进行分发。因为这个包会被安装,所以Alembic的脚本目录(也就是存放迁移文件的地方)会被复制到Python包的文件夹里。在这种情况下,我该如何告诉Alembic去哪里找这个目录呢?
在Alembic的文档中提到,migration
目录可以在config.ini
文件中作为包引用来指定:
- script_location - 这是Alembic环境的位置。通常它是以文件系统的位置来指定的,可以是相对路径也可以是绝对路径。如果是相对路径,它会被解释为相对于当前目录。
(省略)
为了支持将应用程序打包成.egg文件,值也可以作为包资源来指定,这样就会使用resource_filename()来找到文件(这个功能在0.2.2版本中新增)。任何包含冒号的非绝对URI在这里会被解释为资源名称,而不是简单的文件名。
文档中没有提供更多的信息或示例。
有没有人成功实现过这个?你是怎么把你的migration
脚本文件夹变成一个“包资源”的?然后又是怎么告诉Alembic去哪里找它的呢?
1 个回答
10
比如说:
script_location = mypackage:somewhere/inside/it
这就意味着你需要把迁移文件放进你的发布包里:你应该查看一下你的 MANIFEST.in 文件等等。