python程序在使用py2exe转换为exe后不处理错误

zfciruhq  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(509)

我已经为myqsl数据库编写了一个接口,当出现错误时,比如数据库离线时,它会通过引发我的自定义错误来处理它,这样我就知道出了什么问题。我对它很满意,并决定它可以被转换为exe,并使用py2exe完成了这项工作。这失败了,经过一些研究,我发现它不再工作了,所以我降级到python3.4。现在它转换了,但是转换后的程序不再处理错误。
我已经检查了是否有正确的mysql连接器,并重新下载了完全相同的连接器,以便将其包括在内,因为我处理的错误通常是mysql.connector.error。
原始程序中的错误处理:

import myqsl.connector as mariadb

try:
    mariadb_connection = mariadb.connect(user='root', password='', database='marsmenagerie')
    cursor = mariadb_connection.cursor()
except mariadb.Error:
    clearscreen()
    print("Failed to connect to Database. (Error: 2475JWRT), Contact Censored")
    print("===========================")
    PAUSE()
    exit()

如果应引发此错误,则转换程序将创建错误:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 525, in open_connection
    self.sock.connect(sockaddr)
ConnectionRefusedError: [WinError 10061] Kan geen verbinding maken omdat de doelcomputer de verbinding actief heeft geweigerd

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 56, in get_client_error
globals(), locals(), ['client_error'])
ImportError: No module named 'mysql.connector.locales.eng'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 245, in _open_connection
    self._socket.open_connection()
  File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 528, in open_connection
    errno=2003, values=(self.get_address(), _strioerror(err)))
  File "C:\Python34\lib\site-packages\mysql\connector\errors.py", line 187, in __init__
    self.msg = get_client_error(self.errno)
  File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 59, in get_client_error
language))
ImportError: No localization support for language 'eng'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 148, in send_plain
    self.sock.sendall(packet)
OSError: [WinError 10057] Een aanvraag om gegevens te verzenden of te ontvangen is niet toegestaan omdat de socket niet is verbonden en omdat (tijdens het verzenden op een datagramsocket via een sendto-aanroep) geen adres is opgegeven

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 56, in get_client_error
globals(), locals(), ['client_error'])
ImportError: No module named 'mysql.connector.locales.eng'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 102, in __init__
    self.connect(**kwargs)
  File "C:\Python34\lib\site-packages\mysql\connector\abstracts.py", line 731, in connect
    self._open_connection()
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 256, in _open_connection
    self.close()
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 276, in close
    self.cmd_quit()
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 617, in cmd_quit
    self._socket.send(packet, 0, 0)
  File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 151, in send_plain
    errno=2055, values=(self.get_address(), _strioerror(err)))
  File "C:\Python34\lib\site-packages\mysql\connector\errors.py", line 187, in __init__
    self.msg = get_client_error(self.errno)
  File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 59, in get_client_error
language))
ImportError: No localization support for language 'eng'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 148, in send_plain
    self.sock.sendall(packet)
OSError: [WinError 10057] Een aanvraag om gegevens te verzenden of te ontvangen is niet toegestaan omdat de socket niet is verbonden en omdat (tijdens het verzenden op een datagramsocket via een sendto-aanroep) geen adres is opgegeven

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 56, in get_client_error
globals(), locals(), ['client_error'])
ImportError: No module named 'mysql.connector.locales.eng'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "program.py", line 16, in <module>
  File "C:\Python34\lib\site-packages\mysql\connector\__init__.py", line 173, in connect
    return MySQLConnection(*args,**kwargs)
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 105, in __init__
    self.close()
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 276, in close
    self.cmd_quit()
  File "C:\Python34\lib\site-packages\mysql\connector\connection.py", line 617, in cmd_quit
    self._socket.send(packet, 0, 0)
  File "C:\Python34\lib\site-packages\mysql\connector\network.py", line 151, in send_plain
    errno=2055, values=(self.get_address(), _strioerror(err)))
  File "C:\Python34\lib\site-packages\mysql\connector\errors.py", line 187, in __init__
    self.msg = get_client_error(self.errno)
  File "C:\Python34\lib\site-packages\mysql\connector\locales\__init__.py", line 59, in get_client_error
language))
ImportError: No localization support for language 'eng'

我知道,很长。我正努力使它尽可能短,但我不想隐瞒可能是相关的信息。也许是我最大的问题。
我以为它会引起我输入的错误。然而,这只会引发上面显示的错误。在数据库处于活动状态下运行时,程序运行正常。

gstyhher

gstyhher1#

好。我已经解决了!问题是py2exe没有复制标准mysql错误的eng本地化,至少在本例中没有。您可以在错误中的这一行找到证据:

ImportError: No module named 'mysql.connector.locales.eng'

这个问题似乎以前就存在过,因此得到了解决(importerror:python中不支持语言“eng”的本地化)我在本网站的帮助下手动将eng本地化添加到library.zip文件中:http://pydoc.net/mysql-connector-python/2.0.2/
现在它像做梦一样工作。

xkftehaa

xkftehaa2#

这个问题在这里有答案。我在这里再次提到它,以防链接不起作用。这个问题与@py2exe或pyinstaller没有将模块文件mysql.connector.locales.eng复制到exe的问题相同。对于这个,我们可以把代码部分, from mysql.connector.locales.eng import client_error 在我们的python脚本中。这样,py2exe或pyinstaller将丢失的文件复制到exe中。

相关问题