2016-03-16 64 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

相关问题