2016-03-16 67 views
0

我正在構建一個使用MySQLdb的應用程序,它似乎可以正確構建,但在另一臺Mac上運行時,它意外退出。 是否有任何必需的步驟來正確使用py2app包含MySQLdb? 這裏是我的setup.py:py2app不能與MySQLdb一起使用

from setuptools import setup 

APP = ['myApplication.py'] 
DATA_FILES = [] 
OPTIONS = { 
        'iconfile':'myIcon.icns', 
        'plist': {'CFBundleShortVersionString':'1.0', 
          'NSHumanReadableCopyright': u"Copyright © 2016, All Rights Reserved"}} 

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

我以前建立了這個成功地利用這個確切的設置和完全相同的myApplication.py,這並在其他Mac電腦上運行,所以它改變的唯一事情是版本號碼是:

Python: 2.7.11 
MySQL-Python: 1.2.5 
mysql-connector-python: 2.0.4 
mysqlclient: 1.3.7 
py2app: 0.9 
setuptools: 20.3 

有什麼我可以嘗試解決的?

更新: 我只是想加入到設置:

PACKAGES = ['MySQLdb'] 
INCLUDES = ['MySQLdb'] 
OPTIONS = {'argv_emulation': True, 
      'packages': PACKAGES, 
      'includes': INCLUDES, 
      } 

但我仍然得到unexpedidly的退出,這是控制檯崩潰日誌的開頭:

Exception Type:  EXC_BAD_INSTRUCTION (SIGILL) 
Exception Codes:  0x0000000000000001, 0x0000000000000000 
Exception Note:  EXC_CORPSE_NOTIFY 

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 
0 libmysqlclient.18.dylib    0x000000010baf5e18 mysql_server_init + 132 
1 _mysql.so       0x00000001095b0fc1 0x1095ad000 + 16321 
2 org.python.python     0x00000001022c410c PyEval_EvalFrameEx + 40108 
3 org.python.python     0x00000001022c4ff3 PyEval_EvalCodeEx + 2131 

任何其他的想法我可以試試嗎?

更新: 我連接到MySQL服務器5.6版,我需要更新嗎?

回答

0

編輯:Ups,對不起。我的第一個答案是py2exe。我不知道py2app是否創建了一個日誌執行。在任何情況下,嘗試同樣的方法建議早些時候:

PACKAGES = ['MySQLdb'] 
    INCLUDES = ['MySQLdb'] 
    OPTIONS = {'argv_emulation': True, 
       'packages': PACKAGES, 
       'includes': INCLUDES, 
       } 

原來的職位(我會離開它,以防萬一): 在生成.exe文件應該給你什麼失敗的更具體的信息的日誌。在任何情況下,你可能會想嘗試,包括直接在設置「MySQL的」套餐:

# setup.py 
    from distutils.core import setup 
    import py2exe 

    includes = ["_mysql","MySQLdb","_mysql_exceptions",] 

    options = {"py2exe": { # create a compressed zip archive 
          "compressed": 1, 
          "optimize": 2, 
          "includes": includes, 
           }} 
    setup(
     options = options, 
     console=['hamtainfo.py'], 

     ) 

此代碼直接來自py2exe Mailing List

+0

我只是想增加在py2app的東西,同樣的結果,看到我的UPDATE以上? – speedyrazor

+0

是的,日誌不是很豐富,但它似乎無法找到libmysqlclient.18.dylib。檢查文件是否在您正在製作的發行版中。有一個問題在Stackoverflow專門爲該文件,看到它可以幫助你:http://stackoverflow.com/questions/6383310/python-mysqldb-library-not-loaded-libmysqlclient-18-dylib – armatita

+0

文件存在於該位置,你需要在目標機器上安裝MySQL嗎? – speedyrazor

相關問題