Python 在MacOS Mojave上运行PyInstaller的应用程序后,如何修复msgcat::mc错误?
我正在尝试使用PyInstaller 3.4和Python 3.6.8创建MacOS项目的捆绑应用程序,而不是从Python.org安装的brew。首次运行应用程序时产生错误: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
[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"