2012-05-10 41 views
1

我無法通過py2app獲取SQLAlchemy與我編譯的應用程序一起工作。我已經用py2exe在Windows中成功完成了這個任務。以下是我的安裝文件:SQLAlchemy與py2app的mysql方言錯誤

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' 
+0

林假設你有http://sourceforge.net/projects/ mysql-python/installed,有適當的版本,你有哪些版本的python?我沒有調用py2app就可以正常工作。 –

+0

我這樣做,我跑2.7。是的,它像往常一樣運行python文件時工作。 – Cryptite

+0

好吧,這是與Mac OS X或您自己安裝的版本一起提供的python的默認版本,它可能是py2app引用系統,而當您測試它時,它引用您的系統,它也可能是路徑問題沒有正確設置。 –

回答

1

你可能還需要_mysql,它應該包含原生的mysql綁定。此外,此綁定需要將二進制mysql庫安裝在目標系統上。

您的應用程序可能會是一個很多更便攜,如果您使用純Python MySQL庫,如pymysqlMySQL Connector/Python(都是supported by sqlalchemy

+0

沒有運氣,嘗試使用easy_install並將_mysql添加到包含列表中,並得到相同的錯誤。任何其他想法? :/ – Cryptite