在Setuptoolssetup.py
文件中打包Alembic迁移文件的正确方法是什么?所有内容都在我的repo根目录中alembic/
。在
这是一个Python应用程序,不是一个库。在
我想要的安装流程是有人可以pip install
我的应用程序。然后,它们就可以通过运行<app> alembic upgrade --sqlalchemy.url=<db_url>
之类的程序来初始化应用程序数据库。升级将需要一个pip install -U
,之后可以再次运行Alembic命令。在
这是非正统的吗?在
如果没有,我该怎么做?当然是console_scripts
entry_points
。但除此之外?在
我不确定这是否正确,但我是这样做的:
首先,可以使用-x选项向alembic添加一些自定义选项,并且可以在this great answer中找到详细说明。{cd2>中的{。在
然后,我将
alembic.ini
文件和alembic
目录从项目根目录移动到顶层python包,从而成功地打包了alembic和我的迁移:这允许在my
^{pr2}$setup.py
中使用setuptoolspackage_data
指令:A此时,alembic配置和修订被正确打包,但是
alembic.ini
设置必须调整以反映新的目录树。可以使用%(here)s
参数完成,该参数包含包含alembic.ini
文件的目录的绝对路径:最后,必须使用
alembic
选项调用alembic
,该选项允许提供配置文件的路径:这样做的一个方法是保持主alembic文件夹沿着主包文件夹,是把alembic文件夹当作它自己的包安装在主包旁边。在
为此,您必须重命名它(它不能被称为
alembic
,因为它将是一个顶级包,所以需要一个唯一的名称—我使用了migrations
),并在alembic文件夹和versions文件夹中添加一个__init__.py
文件。在在部署时运行迁移需要知道已安装包的路径—一个简单的方法是提供一个应用迁移的控制台脚本。在
项目结构如下:
和
^{pr2}$setup.py
:最后
migrations/apply.py
:现在,在安装了轮子之后,您将有一个命令
apply-migrations
,您可以直接调用它。注意,我在这里实现的版本没有任何参数-但是如果您想传递例如sqlalchemy.url
,您可以将其添加到alembic_args
中。在我个人更喜欢在
migrations/env.py
中设置url。例如,如果您有一个名为SQLACLHEMYURL
的环境变量,您可以在migrations/env.py
中添加以下内容:然后您可以调用:
关于堕落。在
相关问题 更多 >
编程相关推荐