<p>我不确定这是否正确,但我是这样做的:</p>
<p>首先,可以使用-x选项向alembic添加一些自定义选项,并且可以在<a href="https://stackoverflow.com/questions/24622170/using-alembic-api-from-inside-application-code/35211383#35211383">this great answer</a>中找到详细说明。{cd2>中的{。在</p>
<p>然后,我将<code>alembic.ini</code>文件和<code>alembic</code>目录从项目根目录移动到顶层python包,从而成功地打包了alembic和我的迁移:</p>
<pre><code><project root>
├── src
│ └── <top-level package dir>
│ ├── alembic
│ │ ├── env.py
│ │ ├── README
│ │ ├── script.py.mako
│ │ └── versions
│ │ ├── 58c8dcd5fbdc_revision_1.py
│ │ └── ec385b47da23_revision_2.py
│ ├── alembic.ini
│ ├── __init__.py
│ └── <other files and dirs>
└── <other files and dirs>
</code></pre>
<p>这允许在my<code>setup.py</code>中使用setuptools<code>package_data</code>指令:</p>
^{pr2}$
<p>A此时,alembic配置和修订被正确打包,但是<code>alembic.ini</code>设置必须调整以反映新的目录树。可以使用<code>%(here)s</code>参数完成,该参数包含包含<code>alembic.ini</code>文件的目录的绝对路径:</p>
<pre><code># A generic, single database configuration.
[alembic]
# path to migration scripts
script_location = %(here)s/alembic
[...]
# version location specification; this defaults
# to alembic/versions. When using multiple version
# directories, initial revisions must be specified with version-path
# version_locations = %(here)s/bar %(here)s/bat alembic/versions
version_locations = %(here)s/alembic/versions
[...]
</code></pre>
<p>最后,必须使用<code>alembic</code>选项调用<code>alembic</code>,该选项允许提供配置文件的路径:</p>
<pre><code>alembic -c <path to alembic.ini> ...
</code></pre>