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

import _tkinter#如果失败,则可能没有为Tk配置Python

别旻
2023-03-14
问题内容

一些初始信息:我的计算机上装有Windows 10,所有程序均为64位版本。

我正在使用tkinter在python(3.6.1)中编写一个游戏,现在我想将其转换为.exe。我使用了cx_freeze(5.0.1)并进行了构建,但是当我尝试打开游戏时,会打开一个窗口,然后立即关闭。因此,我尝试通过cmd打开它,并弹出以下错误:

File "sliks.py", line 1, in <module>
File "C:\Users\Tinka\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 36, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: DLL load failed: The specified module could not be found.

我已经检查了tkinter支持,如下所示:https :
//wiki.python.org/moin/TkInter
,没有错误发生。

我也尝试用pip安装tk-dev,正如在此问题的一些答案中所说的那样,但是当我收到此消息时什么也没有发生:

C:\WINDOWS\system32>pip install tk-dev
Collecting tk-dev
Could not find a version that satisfies the requirement tk-dev (from versions: )
No matching distribution found for tk-dev

我的计算机上从未安装过python 2.x,因此没有混合库,如这种情况:ImportError
DLL加载无法导入_tkinter

这是我用于cx_freeze的setup.py文件,以防出现问题:

from cx_Freeze import setup, Executable
import os

os.environ['TCL_LIBRARY'] = r'C:\Users\Tinka\AppData\Local\Programs\Python\Python36\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Tinka\AppData\Local\Programs\Python\Python36\tcl\tk8.6'

base = None

setup(
    name = "Six",
    version = "0.1",
    options = {"build_exe": {"packages": ["tkinter"]}},
    executables = [Executable("sliks.py", base=base)]
    )

任何想法可能是什么问题?我知道在这个问题上有很多悬而未决的问题,但是我尝试了大多数解决方案,但是没有运气。


问题答案:

我不得不非常努力地寻找一个适合自己的解决方案。不知道这是否可以帮助任何人,但对我有用。据我了解,这些错误是在cx_freeze找不到所有依赖项或获取不正确的依赖项时生成的。

我要做的第一件事是深入到python目录。在这里要非常小心,并确保您正在查找正在执行python代码的位置。如果您不知道,IDE可能会为您提供此路径。如果有多个安装或环境,则可能会关闭。

在那里,我确定了引起错误的文件。就我而言,这是一个tkinter依赖项。问题是tcl86.dll和tk86.dll。您可以看到我添加的行。然后我的徽标实际上开始执行此操作,因此我必须添加它。现在效果很好。这是我的setup.py文件(cx_freeze配置)的样本。

from cx_Freeze import setup, Executable
import sys
import os

includes = []
include_files = [r"C:\Users\Ace\AppData\Local\Programs\Python\Python36\DLLs\tcl86t.dll",
                 r"C:\Users\Ace\AppData\Local\Programs\Python\Python36\DLLs\tk86t.dll",
                 r"C:\Users\Ace\Desktop\IPNV\KP_App\FML\logo1.gif"]
os.environ['TCL_LIBRARY'] = r'C:\Users\Ace\AppData\Local\Programs\Python\Python36\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Ace\AppData\Local\Programs\Python\Python36\tcl\tk8.6'
base = 'Win32GUI' if sys.platform == 'win32' else None


setup(name='KpApp', version='0.9', description='KP Report App',
      options={"build_exe": {"includes": includes, "include_files": include_files}},
      executables=[Executable(r'C:\Users\Ace\Desktop\IPNV\KP_App\FML\firstapp.py', base=base)])


 类似资料:
  • 问题内容: 我有一个使用该任务复制各种xml文件的蚂蚁。它使用过滤合并文件中的属性。每个环境(开发,阶段,生产)都有一个不同的存储环境配置。 有时,我们向Spring XML或其他需要更新文件的配置文件添加新属性。 如果缺少属性,我希望蚂蚁快速失败。也就是说,如果有任何原始令牌将其放入生成的文件中,则我希望该构建终止,以便用户知道他们需要向其本地build.properties添加一个或多个属性。

  • 一个“通过”测试但配置失败的示例。 失败的配置:@afterclass tearDown java.lang.assertionerror:java.lang.assertionerror:expected[true],但在)在org.testng.internal.MethodInvocationHelper.invokeMethodCommissioningTimeout(methodInvo

  • 问题内容: 这是一个挑战:为什么此构建失败? 我已经配置了Maven的maven-war-plugin使其不会在绝对的web.xml文件上失败,这似乎是: 但是尽管有这种配置,它仍然会像这样失败: 我实际上没有web.xml,因此如果没有它,我需要它来组装战争。 我尝试将伪造的东西添加到配置中,但这并没有改变任何东西。 我想念什么? 问题答案: POM中的执行ID为。Maven对打包类型的项目运行

  • 我有一个非常简单的Java web应用程序,其中有2个jsp文件(索引和测试)。部署描述符应该提供一些线索: 这个项目是由Maven-WebApp原型创建的,POM中只有一个依赖项: 我在IntelliJ中有两个运行配置,一个用于Tomcat 7.0,一个用于Glassfish 3.1.2.2 当pom如上时,应用程序可以很好地部署到两个服务器上。但当我移除: 部署在Tomcat中失败,但在Gla

  • 问题内容: 我问这个问题是因为我知道以下检查列表是否为空的pythonic方法: 将打印等,所以这让我找出与真值; 但是,如果我尝试将[]和False直接“比较”,则会获得以下信息: 等等… 这里发生了什么?我觉得我确实缺少一些明显的东西。 问题答案: 该语句在布尔上下文中评估所有内容,就像对内置函数的隐式调用一样。 这是您实际检查语句如何评估事物的方式: 参见真值测试文档,空列表被 认为是错误的