Pyinstaller + Tkinter + Mac OS + TCL

Итак, я пытаюсь запустить компиляцию в двоичный код очень простого кода Python с помощью Tkinter. Вот код для test1.py:

import Tkinter as tk

counter = 0
def counter_label(label):
  counter = 0
  def count():
    global counter
    counter += 1
    label.config(text=str(counter))
    label.after(1000, count)
  count()


root = tk.Tk()
root.title("Counting Seconds")
label = tk.Label(root, fg = "dark green")
label.pack()
counter_label(label)
button = tk.Button(root, text='Stop', width=25, command=root.destroy)
button.pack()
root.mainloop()

Затем я использовал pyinstaller для компиляции, выполнив следующее:

pyinstaller --onedir --windowed test1.py

Это работает нормально и генерирует 2 файла, как и ожидалось (версия .exe и приложение для Unix). Когда я нажимаю на файл приложения, оно вылетает при запуске - я ничего не вижу. Если я нажимаю на другой стиль файла (.exe) - открывается новое окно терминала, и в конечном итоге я получаю следующее сообщение об ошибке:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/private/var/folders/0t/1b6bbpcj52xdthkg2d6g2sr40000gn/T/pip-install-MgS374/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
  File "lib-tk/Tkinter.py", line 39, in <module>
  File "/private/var/folders/0t/1b6bbpcj52xdthkg2d6g2sr40000gn/T/pip-install-MgS374/pyinstaller/PyInstaller/loader/pyimod03_importers.py", line 546, in load_module
ImportError: dlopen(/var/folders/0t/1b6bbpcj52xdthkg2d6g2sr40000gn/T/_MEIJX4TS8/_tkinter.so, 2): Library not loaded: @loader_path/Tcl
  Referenced from: /var/folders/0t/1b6bbpcj52xdthkg2d6g2sr40000gn/T/_MEIJX4TS8/_tkinter.so
  Reason: no suitable image found.  Did find:
    /var/folders/0t/1b6bbpcj52xdthkg2d6g2sr40000gn/T/_MEIJX4TS8/Tcl: not a file
    /private/var/folders/0t/1b6bbpcj52xdthkg2d6g2sr40000gn/T/_MEIJX4TS8/Tcl: not a file
test1 returned -1
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

Что я могу сделать, чтобы это исправить? Я думаю, это как-то связано с установкой TCL в версии Python для Mac OS. Я видел в сети разные потенциальные решения, но, к сожалению, ни одно из них не сработало. Любая помощь приветствуется.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
3 149
1

Ответы 1

Похоже, это известная ошибка в pyinstaller.

https://github.com/pyinstaller/pyinstaller/issues/1350

Другие вопросы по теме