1

py2app を通過した後、SQLAlchemy をコンパイル済みアプリで動作させるのに問題があります。Windowsでpy2exeを使用してこれを成功させました。以下は私のセットアップファイルです:

APP = ['Blah.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True,
           'includes': ['sip',
                        'PyQt4._qt',
                        'sqlalchemy.dialects.mysql',
                        'MySQLdb',
                        "gzip"]
           }

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

人々が sqlite に使用するのを見たので、これは正しい方法のように見えますが、コンパイル後にアプリを実行しようとすると、まだこのエラーが発生します:

sqlalchemy.exc.ArgumentError: Could not determine dialect for 'mysql+mysqldb'

私は最近 PyInstaller を試してみましたが、次のような別のエラーがありますが、ほとんど同じ場所で立ち往生しています。

 Traceback (most recent call last):
   File "<string>", line 96, in <module>
   File "/Users/tom/Downloads/pyinstaller-pyinstaller-2145d84/PyInstaller/loader/iu.py", line 386, in importHook
     mod = _self_doimport(nm, ctx, fqname)
   File "/Users/tom/Downloads/pyinstaller-pyinstaller-2145d84/PyInstaller/loader/iu.py", line 480, in doimport
     exec co in mod.__dict__
   File "build/bdist.macosx-10.7-intel/egg/MySQLdb/__init__.py", line 19, in <module>
   File "/Users/tom/Downloads/pyinstaller-pyinstaller-2145d84/PyInstaller/loader/iu.py", line 386, in importHook
     mod = _self_doimport(nm, ctx, fqname)
   File "/Users/tom/Downloads/pyinstaller-pyinstaller-2145d84/PyInstaller/loader/iu.py", line 480, in doimport
     exec co in mod.__dict__
   File "build/bdist.macosx-10.7-intel/egg/_mysql.py", line 7, in <module>
   File "build/bdist.macosx-10.7-intel/egg/_mysql.py", line 4, in __bootstrap__
   File "OSX_Installer/Jango/build/pyi.darwin/Jango/out00-PYZ.pyz/pkg_resources", line 882, in resource_filename
   File "OSX_Installer/Jango/build/pyi.darwin/Jango/out00-PYZ.pyz/pkg_resources", line 1352, in get_resource_filename
   File "OSX_Installer/Jango/build/pyi.darwin/Jango/out00-PYZ.pyz/pkg_resources", line 1363, in _extract_resource
 KeyError: '_mysql/_mysql.so'
4

1 に答える 1

1

_mysqlネイティブの mysql バインディングを含める必要がある場合もあります。また、このバインディングでは、バイナリ mysql ライブラリをターゲット システムにインストールする必要があります。

pymysqlMySQL Connector/Python (どちらもsqlalchemy でサポートされています)などの純粋な python mysql ライブラリを使用すると、アプリケーションの移植性が大幅に向上します。

于 2012-05-13T20:28:11.563 に答える