3

小さなデスクトップアプリケーションにpython 2.6、sqlalchemy 0.6を使用しています。また、py2exe と sqlalchemy-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 と移行スクリプトは、私のソフトウェアで使用されるすべての python リソースを組み込むために py2exe で使用される「library.zip」内に正しくあります。

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