gpt4 book ai didi

python - 使用 pyinstaller 编译时 "except"期间的 mysql.connector 错误?

转载 作者:可可西里 更新时间:2023-11-01 07:22:25 24 4
gpt4 key购买 nike

我有一个 python 程序,它使用 pyinstaller 将我构建到 exe 中的 mysql 调用。使用 pyinstaller 编译 --onefile 或 --onedir 会出现以下问题。

我已经能够使用 mysqldb 或 mysql.connector 成功连接并进行查询。

这是 mysqldb 连接逻辑:

# from http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
try:
db = MySQLdb.connect(host=hostname,user=username,passwd=password)
except MySQLdb.Error as e:
reply = QtGui.QMessageBox.critical(self, "Error",str(e.args[1]))
return

这是 mysql.connector 连接逻辑:

# http://dev.mysql.com/
try:
db = mysql.connector.connect(host=hostname,user=username,password=password)
except mysql.connector.Error as e:
reply = QtGui.QMessageBox.critical(self, "Error",str(e.msg))
return

如果我提供了一个错误的主机地址,那么在两个连接调用期间都会抛出一个“except”,并捕获并显示错误消息。这对两个连接器都有效之前我用 pyinstaller 编译。

但是,mysql.connector“except”不会出现在我程序的编译版本中。对于 mysqldb 连接调用,“except”确实正常工作并出现错误消息。

这让我得出结论,mysql.connector 有一个错误。其他人可以证实这一点还是我做错了什么?

最佳答案

所有这些工具(pyinstaller、py2app、py2exe)都不支持您认为的try/except

生成的代码有(很应该有)tryexcept 子句,但为了推断程序实际需要哪些模块,只有一个分支被评估。

这可能会对动态加载造成各种破坏。

简单的 hackish 修复是直接包含所有相关的导入,例如:

import mysql
import mysql.connector
import mysql.secret_lazy_loaded_submodule
import QtGui
import QtGui.QMessageBox
import QtGui.secret_lazy_loaded_submodule
try:
mysql.connector.foo()
except Exception:
QtGui.QMessageBox.foo()

关于python - 使用 pyinstaller 编译时 "except"期间的 mysql.connector 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23657934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com