Как исправить ошибку msgcat :: mc после запуска приложения из PyInstaller на MacOS Mojave? - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь создать пакетное приложение моего проекта для MacOS, используя PyInstaller 3.4 с Python 3.6.8 (не brew, установлено с python.org).При первом запуске приложения возникла ошибка:

[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"

Чтобы убедиться, что код проекта или spec -файл, созданный вручную для PyInstaller, не являются проблемой, я написал простой скрипт:

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, и он ведет себя так же.Содержимое pyapp.log после запуска dist/main.app:

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"

1 Ответ

0 голосов
/ 07 июня 2019

PyInstaller неправильно копирует данные tkinter и tcl на macos. Я написал скрипт для этого вручную:

#!/bin/bash
app_root="dist/APPNAME.app/Contents/MacOS"
python_path="/Library/Frameworks/Python.framework/Versions/3.6/lib"

cp -r "$python_path/tcl8" "$app_root/tcl8"
cp -r "$python_path/tcl8.6" "$app_root/tcl"
cp -r "$python_path/tk8.6" "$app_root/tk"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...