cx_freeze exe: приложение может работать только один раз, а затем не может найти пакет - PullRequest
0 голосов
/ 27 апреля 2020

Я создал небольшое приложение с Tkinter, которое позволяет извлечь некоторые данные из выбранных файлов Excel и создать красивый отчет. Я хочу поделиться этим с моими коллегами. Таким образом, я решил создать exe-файл из моего кода. После сборки приложения со следующим файлом «setup» для cx_freeze («python setup.py build»):

from cx_Freeze import setup, Executable
import cx_Freeze as cx
import sys
import os
import platform



libs_to_include = ["tkinter","os",'csv',"pandas","xlwings","xlsxwriter","numpy","matplotlib.backends.backend_tkagg",
            "scipy.sparse.csgraph._validation","scipy"]

packages_to_include = ["tw_package"] + libs_to_include
libs_to_exclude = ['PyQt4', 'PyQt5', 'PySide', 'IPython','jupyter_client', 'jupyter_core', 'ipykernel','ipython_genutils',"scipy.spatial.cKDTree"]

include_files = [r"tw_package\resources"]
if platform.system() == "Windows":
    base = "Win32GUI"
    target_name = 'tw_app.exe'
    PYTHON_DIR = os.path.dirname(os.path.dirname(os.__file__))
    os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_DIR, 'tcl', 'tcl8.6')
    os.environ['TK_LIBRARY'] = os.path.join(PYTHON_DIR, 'tcl', 'tk8.6')
    include_files += [
        (os.path.join(PYTHON_DIR, 'DLLs', 'tcl86t.dll'), ''),
        (os.path.join(PYTHON_DIR, 'DLLs', 'tk86t.dll'), '')
    ]



cx.setup(
    name='Tw_App',
    version='1.4',
    author='Teodor Wisniewski',
    description='Data driven applicatios',
    packages=['tw_package'],
    executables=[
        cx.Executable('main_app.py', base=base,
                      targetName=target_name)],
    options={
        'build_exe': {
            'packages': packages_to_include,
            'includes': libs_to_include,
            'excludes': libs_to_exclude,
            'include_files': include_files
        }
    }
)

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

"ModuleNotFoundError: нет модуля с именем" tw_package.application "Это довольно странно, что при первом запуске я не не получаю эту ошибку. Вот структура моего проекта:

main_app.py
setup.py
tw_package
In the tw_package, there are other sub packages.

У вас есть какие-либо идеи, почему мое приложение не может найти этот пакет? Это работает, если я открою его в своей IDE. Заранее спасибо .

...