当前位置: 首页 > 面试题库 >

使用cx_freeze将脚本转换为.exe时如何包括tkinter?

呼延运恒
2023-03-14
问题内容

我正在使用cx_freeze将python文件传输到exe。问题是当我在setup.py中排除tkinter时,我可以成功生成exe文件,但是执行exe文件时说NoModule named tkinter

build_exe_options = {"packages": ["os","numpy","time","optparse","linecache","pandas",
                     "matplotlib","PIL"], "excludes": ["tkinter"]}

但是当我尝试包含时tkinter,它只是无法生成exe文件。

build_exe_options = {"packages": ["os","numpy","time","optparse","linecache","pandas",
                     "matplotlib","PIL","tkinter"]}



File "C:\Users\changchun_xu\AppData\Local\Programs\Python\Python36-32\lib\os.py", line 669, in __getitem__
    raise KeyError(key) from None
KeyError: 'TCL_LIBRARY'

问题答案:

您必须进行两项修改setup.py才能使工作正常:

  1. 设置TCL-LIBRARYTK_LIBRARY环境变量。(您已经这样做了)

  2. tcl86t.dll和添加tk86t.dll到您的 include_files 参数

所以setup.py应该看起来像这样:

import os
from cx_Freeze import setup, Executable

os.environ['TCL_LIBRARY'] = 'c:/python36/tcl/tcl8.6'
os.environ['TK_LIBRARY'] = 'c:/python36/tcl/tk8.6'

# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(
    packages = [],
    excludes = [],
    include_files=['c:/python36/DLLs/tcl86t.dll', 'c:/python36/DLLs/tk86t.dll']
)

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

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

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


 类似资料:
  • 问题内容: 我想将转换到对微软。为此有任何程序转换器吗? 另外,如果有适用于Mac和Linux的操作系统,我也将为你提供建议。 问题答案: Launch4j在Windows和Linux / Mac上均可使用。但是,如果你正在运行Linux / Mac,则有一种方法可以将jar嵌入到为你执行自动启动的shell脚本中,因此只有一个可运行文件: 然后,从jar中创建可运行文件: 它的工作方式与laun

  • 问题内容: 我试图将一个相当简单的Python程序转换为可执行文件,但是找不到我想要的东西,所以我有几个问题(我正在运行Python3.6): 到目前为止,我发现这样做的方法如下 下载旧版本的Python并使用 在3.6中设置虚拟环境,这将允许我执行1。 下载Python到C ++转换器并使用它。 这是我尝试过的/遇到的问题。 我在安装所需的下载之前安装了它(pypi-something),所以它

  • 有什么想法吗?

  • 我目前正在为SoundSphere程序做最后的润色,不幸的是,由于这个错误,我似乎无法用launch4j将jar文件转换为exe文件 我知道这与我用fx用java 16编写这个程序有关,它只能识别jre版本8。 我的问题是如何解决这个问题/在哪里可以获得java 16的jre? 谢谢你的时间和帮助 托马斯·古斯塔夫森

  • 问题内容: 如果我做类似的事情: 那么它只会打印出约会数据,而不是相关的职员数据。如果我执行result [0] .staff.inpsect,那么我当然会得到人员数据。 问题是我想将它作为JSON(包括人员行)返回给AJAX。如何强制它包含人员行,还是必须遍历并手动创建内容? 问题答案: 是一种说法,没有。您需要在控制器中执行以下操作: 您需要在“约会”和“职员”之间建立关联才能正常工作。

  • 问题内容: 编辑: 是否使用不在此问题的范围内。考虑使用PDO。 需要采取什么步骤将脚本从使用不赞成使用的功能转换为? 使用代替时,是否需要采取其他不同的措施? 这是使用函数的基本脚本: 问题答案: 注意: 从转换到可能不是最佳的。如果您准备将所有代码转换为OOP,请考虑使用 PDO 。 这是很有诱惑力的尝试更换的所有实例与祈祷它的工作原理。您会很亲密,但不是很准。 连接到数据库: 幸运的是,该方

  • 我有一个以 UTC 时区存储交易日期时间的表。我需要将此时间转换为东部时区,即美国东部时间或美国东部夏令时,具体取决于交易日期。 如何在不编写大函数或创建为每个交易日期标记 EST / EDT 的表/视图的情况下执行此操作?

  • 问题内容: 我到处都在搜寻这个答案,但是找不到答案。我有一个与tkinter接口的python脚本(3.3)。我使用cx_freeze从中创建可执行文件,并获得了一个包含一些文件和文件夹的build文件夹。我双击.exe文件,但没有任何反应。我正在使用以下设置: 如果我只是打开我的代码并运行它,则该界面将完美运行。进行构建时,我没有收到任何错误消息(至少我看不到…顺便说一句,我该如何验证?)。关于