Python 在MacOS Mojave上运行PyInstaller的应用程序后,如何修复msgcat::mc错误?

Python 在MacOS Mojave上运行PyInstaller的应用程序后,如何修复msgcat::mc错误?,python,python-3.x,tkinter,pyinstaller,Python,Python 3.x,Tkinter,Pyinstaller,我正在尝试使用PyInstaller 3.4和Python 3.6.8创建MacOS项目的捆绑应用程序,而不是从Python.org安装的brew。首次运行应用程序时产生错误: [2195] Failed to execute script pyi_rth__tkinter 我已经找到了解决这个问题的办法。运行AppName.app/Contents/MacOS/AppName之后,不会出现任何错误。但如果我尝试运行AppName.app,它会提供: File "tkinter/__ini

我正在尝试使用PyInstaller 3.4和Python 3.6.8创建MacOS项目的捆绑应用程序,而不是从Python.org安装的brew。首次运行应用程序时产生错误:

[2195] Failed to execute script pyi_rth__tkinter
我已经找到了解决这个问题的办法。运行AppName.app/Contents/MacOS/AppName之后,不会出现任何错误。但如果我尝试运行AppName.app,它会提供:

  File "tkinter/__init__.py", line 2023, in __init__
_tkinter.TclError: invalid command name "msgcat::mc"
为了确保PyInstaller的项目代码或手动创建的规范文件没有问题,我编写了一个简单的脚本:

导入系统 导入日志记录 从pathlib导入路径 将tkinter作为tk导入 logging.basicConfig filename=路径“~/Desktop/pyapp.log”。expanduser logger=logging.getLogger 尝试: tk._试验 例外情况除外,如e: 例外 最后: 系统出口 创建了带有pyinstaller main.py窗口的捆绑包,其行为与pyinstaller相同。运行dist/main.app后pyapp.log的内容:


PyInstaller无法在macos上正确复制tkinter和tcl数据。我编写了一个手动执行的脚本:

!/bin/bash app_root=dist/APPNAME.app/Contents/MacOS python_path=/Library/Frameworks/python.framework/Versions/3.6/lib cp-r$python\u path/tcl8$app\u root/tcl8 cp-r$python\u path/tcl8.6$app\u root/tcl cp-r$python\u path/tk8.6$app\u root/tk
我运行了代码,当我运行dist/main/main.exe时,它运行得非常好。但由于某些原因,在升级到莫哈韦后,我的Mac电脑上的应用程序甚至无法打开。我认为PyInstaller还不支持Mojave上的tkinter GUI。我可能错了,因为Kivy GUI。应用程序在使用-noconsole标志时工作得非常好。谢谢,但不幸的是,Kivy不是该项目的选项。这是tk/console.tcl文件中的一个bug。
ERROR:root:invalid command name "msgcat::mc"
Traceback (most recent call last):
  File "main.py", line 12, in <module>
  File "tkinter/__init__.py", line 3988, in _test
  File "tkinter/__init__.py", line 2023, in __init__
_tkinter.TclError: invalid command name "msgcat::mc"