CX_FREEZE не может легко импортировать gui tkinter mo - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь создать исполняемый файл windows (.exe) с python3 .7.6 cx_freeze. Я удалил свое имя пользователя и python имя скрипта из следующего кода.

#!/usr/bin/env python3

import sys, os
from cx_Freeze import setup, Executable


PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ["TCL_LIBRARY"] = os.path.join(PYTHON_INSTALL_DIR, r"tcl", r"tcl8.6")
os.environ["TK_LIBRARY"] = os.path.join(PYTHON_INSTALL_DIR, r"tcl", r"tk8.6")

#includes = []
include_files = [r'C:\Users\<username>\AppData\Local\Programs\Python\Python37\DLLs\tcl86t.dll', 
r'C:\Users\<username>\AppData\Local\Programs\Python\Python37\DLLs\tk86t.dll']

build_options = {"packages": ["os","pandas","numpy","openpyxl","re","sys","easygui","pyexcel", 
"string", "utils","tkinter", 
r'C:\\Users\\<username>\\AppData\\Local\\Programs\\Python\\Python37\\lib\\tkinter'],"includes": 
[r'C:\\Users\\<username>\\AppData\\Local\\Programs\\Python\\Python37\\lib\\tkinter'], 'include_files': 
include_files}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(name="Extract from <script_name>",version="1.0",options ={'build_exe': 
build_options},description="Extracts information from <script_name>",executables= 
[Executable("<script_name>", base = base)])

После сборки мне выдают следующие ошибки:

enter image description here

Сценарий setup.py основан на:

cx_freeze Tkinter 'Модуль не найден'

При использовании cx_Freeze и tkinter я получаю: «Ошибка загрузки DLL: указанный модуль не найден». (Python 3.5.3)

Как включить tkinter при использовании cx_freeze для преобразования скрипта в .exe?

Использование Easy Gui С помощью Cx_Freeze

Я попытался собрать с / без указания модулей, как в параметрах include / package, предоставляя файлы tkinter .dll, так и абсолютный путь к пакету tkinter.

Я также проверил документация cx_freeze:

https://cx-freeze.readthedocs.io/en/latest/index.html

В ответах на часто задаваемые вопросы упоминается следующее:

"Обнаружены модули, импортируемые вашим кодом , но если они загружаются динамически - например, с помощью системы плагинов - вы должны сообщить о них cx_Freeze. "

Если это именно тот случай и причина проблемы, как бы я go узнал о динамическом определении загруженные пакеты?

Любая помощь в решении этой проблемы будет принята с благодарностью.

Еще раз спасибо,

enzsio

1 Ответ

0 голосов
/ 07 января 2020

Просто наткнулся на ответ случайно. После сборки с помощью следующей команды:

python3 setup.py build

Я копался в папках lib в сборке. Библиотека tkinter (каталог) была названа Tkinter (с заглавной буквы «T»). Я изменил имя каталога на «tkinter» и запустил исполняемый файл. Программа запустилась идеально.

Хочу поблагодарить всех, кто просматривал эту тему и собирался ответить.

Еще раз спасибо!
enzsio

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...