一些初步信息: 我的计算机上有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 load failed importing _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)]
)
任何想法可能是什么问题?我知道有很多关于这个问题的问题,但是我已经尝试了大部分解决方案并没有运气。
答案 0 :(得分:11)
我必须非常努力地为自己找出这个。不确定这是否有助于任何人,但它对我有用。 根据我的理解,当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)])