【问题标题】:cx_Freeze Exe Application closes as soon as it opens without any errorcx_Freeze Exe 应用程序一打开就关闭,没有任何错误
【发布时间】:2019-02-08 22:04:02
【问题描述】:

我开发了一个 tkinter gui 应用程序并使用 cx_Freeze 将其转换为 exe。

exe 文件工作正常。但是几天后,当我尝试打开它时,它正在启动应用程序并立即关闭。我还尝试创建 bat 文件以查看是否引发任何错误。但是没有错误。 毕竟,我尝试使用相同的设置文件再次生成一个新版本。它运行良好,应用程序正常打开。但是不知道旧的有什么问题。

如果有人看到这种奇怪的行为,请帮助我。

作为参考,我将我的设置文件复制如下:

import os
from cx_Freeze import setup, Executable

os.environ['TCL_LIBRARY'] = 'C:/Program Files/Python3.6/tcl/tcl8.6'
os.environ['TK_LIBRARY'] = 'C:/Program Files/Python3.6/tcl/tk8.6'

buildOptions = dict(
    packages = ["pandas","tkinter","numpy","pandatables","Images"],
    excludes = [],
    include_files=['C:/Program Files/Python3.6/DLLs/tcl86t.dll', 'C:/Program Files/Python3.6/DLLs/tk86t.dll']
)

import sys
base = 'Win32GUI' if sys.platform=='win32' else None

executables = [
    Executable('DE.py', base=base)
]

setup(name='DE Validator',
      version = '1.0',
      description = '',
      options = dict(build_exe = buildOptions),
      executables = executables)'

【问题讨论】:

  • 您使用的是哪个版本的cx_Freeze
  • 抱歉回复晚了。我正在使用 cx_Freeze-5.1.1

标签: python cx-freeze


【解决方案1】:

对于cx_Freeze 5.1.1 版,TCL/TK DLL 需要包含在构建目录的lib 子目录中。您可以通过将元组 (source, destination) 传递给 include_files 列表选项的相应条目来做到这一点。

此外,动态查找 TCL/TK DLL 的位置会更安全。

尝试如下修改您的安装脚本:

import sys

PYTHON_INSTALL_DIR = os.path.dirname(sys.executable)
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')

buildOptions = dict(
    packages = ["pandas","tkinter","numpy","pandatables","Images"],
    excludes = [],
    include_files=[(os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
                    os.path.join('lib', 'tk86t.dll')),
                   (os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),
                    os.path.join('lib', 'tcl86t.dll'))]
)

【讨论】:

    猜你喜欢
    • 2017-05-14
    • 2019-05-12
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多