python - py2app 无法与 MySQLdb 一起使用

标签 python mysql python-2.7 mysql-python py2app

我正在构建一个使用 MySQLdb 的应用程序,它似乎可以正确构建,但是当在另一台 Mac 上运行它时,它会意外退出。 是否需要执行任何步骤才能将 MySQLdb 正确包含在 py2app 中? 这是我的 setup.py:

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,
          } 

但我仍然无法快速退出,这是控制台崩溃日志的开始:

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,我需要更新它吗?

最佳答案

编辑:抱歉。我的第一个答案是针对 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

关于python - py2app 无法与 MySQLdb 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36031983/

相关文章:

python - 找到目标后如何停止线程?

java jdbc mysql 连接器 : how to resolve disconnection after a long idle time

python - 如何自动包装特定文件中的函数

python - 更改 matplotlib 轴设置

python - 如何将具有多个值的嵌套字典导出到 excel

mysql - SQL错误 "is not in the GROUP BY list"

python - 将字符串字典值更改为整数并将它们相加

python - 如何比较 2 个列表,其中字符串与备用列表中的元素匹配

python - fork 图 python - 没有图像?

mysql - 'undo' 或 'cancel' dockerfile VOLUME 在注册表中共享 mysql 数据库