【发布时间】:2019-05-11 16:47:14
【问题描述】:
我正在尝试使用 PyInstaller 3.4 和 Python 3.6.8(不是 brew,从 python.org 安装)为 MacOS 创建我的项目的捆绑应用程序。应用程序第一次运行出现错误:
[2195] Failed to execute script pyi_rth__tkinter
我在https://github.com/pyinstaller/pyinstaller/issues/3753#issuecomment-432464838 上找到了解决此问题的方法。之后 AppName.app/Contents/MacOS/AppName 的运行没有任何错误。但如果我尝试运行 AppName.app,它会给出:
File "tkinter/__init__.py", line 2023, in __init__
_tkinter.TclError: invalid command name "msgcat::mc"
为确保项目代码或为PyInstaller手动创建的spec-file没有问题,我写了一个简单的脚本:
import sys
import logging
from pathlib import Path
import tkinter as tk
logging.basicConfig(
filename=Path('~/Desktop/pyapp.log').expanduser()
)
logger = logging.getLogger()
try:
tk._test()
except Exception as e:
logger.exception(e)
finally:
sys.exit()
使用pyinstaller main.py --windowed 创建捆绑包,其行为相同。运行dist/main.app后pyapp.log的内容:
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"
【问题讨论】:
-
我运行了代码,当我运行 dist/main/main.exe 时它运行良好。但由于某种原因,更新到 Mojave 后,.app 甚至无法在我的 Mac 上打开。我认为 PyInstaller 还不支持 Mojave 上的 tkinter GUI。我可能错了,因为 Kivy GUI .app 与
--noconsole标志配合得很好。 -
谢谢,但不幸的是,Kivy 不是该项目的选项。
标签: python python-3.x tkinter pyinstaller