3

我将 python 2.6、sqlalchemy 0.6 用于小型桌面应用程序。此外,我正在使用 py2exe 和 sqlalchemy-migrate,我正在尝试将 migrate 集成到 exe 中。这样,当用户启动应用程序时,数据库会自动升级。

如果我尝试在我的 Eclipse 项目中使用 migrate 它运行良好,但我想使用 py2exe 在 exe 中发布项目本身。不幸的是,当我启动 exe 时出现错误:

Traceback (most recent call last):
File "sagra.py", line 7, in <module>
File "guiutil.pyc", line 3, in <module>
File "bo.pyc", line 4, in <module>
File "database.pyc", line 26, in <module>
File "<string>", line 2, in version_control
File "migrate\versioning\util\__init__.pyc", line 160, in with_engine
File "migrate\versioning\api.pyc", line 248, in version_control
File "migrate\versioning\schema.pyc", line 128, in create
File "migrate\versioning\repository.pyc", line 76, in __init__
File "migrate\versioning\repository.pyc", line 97, in verify
migrate.versioning.exceptions.InvalidRepositoryError: db_repository

但是目录 db_repository 和迁移脚本正确地位于 py2exe 使用的“library.zip”中,以合并我的软件使用的所有 python 资源。

似乎 sqlalchemy-migrate 没有在 zip 中搜索存储库的目录。

这里的问题(repository.py):

def verify(cls, path):
"""
Ensure the target path is a valid repository.

:raises: :exc:`InvalidRepositoryError <migrate.versioning.exceptions.InvalidRepositoryError>`
"""
# Ensure the existence of required files
try:
    cls.require_found(path)
    cls.require_found(os.path.join(path, cls._config))
    cls.require_found(os.path.join(path, cls._versions))
except exceptions.PathNotFoundError, e:
    raise exceptions.InvalidRepositoryError(path) 

如何从 zip 中读取存储库?有没有人尝试(并成功)在 py2exe 生成的 exe 中使用 sqlalchemy-migrate ?

谢谢你的帮助

4

0 回答 0