Cryptite
Cryptite

Reputation: 1476

SQLAlchemy mysql dialect error with py2app

I'm having trouble getting SQLAlchemy to work with my compiled app after getting through py2app. I've done this successfully in Windows with py2exe. The following is my setup file:

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'],
)

This appears like it's the right way to do it, as I've seen people use it for sqlite, however I still get this error upon trying to run the app after compile:

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

I've recently been trying with PyInstaller and have gotten stuck at pretty much the same spot, albeit with a different error which is the following:

 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'

Upvotes: 1

Views: 677

Answers (1)

mata
mata

Reputation: 69092

you probably also need _mysql which should include the native mysql bindings. also, this bindings need the binary mysql libraries to be installed on the target system.

your application would probably be a lot more portable if you used a pure python mysql library, such as pymysql or MySQL Connector/Python (both are supported by sqlalchemy)

Upvotes: 1

Related Questions