使用 cx_Freeze 时出现“ImportError: DLL load failed: The specified module could not be found”,即使添加了 tcl86t

Posted

技术标签:

【中文标题】使用 cx_Freeze 时出现“ImportError: DLL load failed: The specified module could not be found”,即使添加了 tcl86t.dll 和 tk86t.dll【英文标题】:Getting "ImportError: DLL load failed: The specified module could not be found" when using cx_Freeze even with tcl86t.dll and tk86t.dll added in 【发布时间】:2019-02-14 05:40:23 【问题描述】:

我正在尝试使用 cx_Freeze 5.1.1 将 .py 文件转换为 .exe。但每次尝试运行该文件时都会弹出一个 ImportError: DLL load failed。根据建议的解决方案 here 和here,我将 tcl86t.dll 和 tk86t.dll 添加到包含文件的列表中。它们出现在构建文件夹中,但错误消息不断弹出。

这是我的 setup.py:

import sys
import os
from cx_Freeze import setup, Executable

os.environ["TCL_LIBRARY"] = r"C:/Users/Name/AppData/Local/Programs/Python/Python36-32/tcl/tcl8.6"
os.environ["TK_LIBRARY"] = r"C:/Users/Name/AppData/Local/Programs/Python/Python36-32/tcl/tk8.6"


base = "Win32GUI" if sys.platform=="win32" else None


build_exe_options = "packages": ["winsound", "random", "time", "tkinter", "math"],
"include_files": ['tcl86t.dll',
                 'tk86t.dll']

setup(
name = "Game",
author = "Name",
description = "game description",
options = "build_exe": build_exe_options,
executables = [Executable("game.py", base=base)]
)

我正在使用 Python 3.6.3 和 Windows 10。任何帮助将不胜感激!

【问题讨论】:

您使用的是哪个版本的cx_Freeze 我使用的是 5.1.1。 【参考方案1】:

cx_Freeze 5.1.1 版中,包含的模块位于构建目录的子目录lib 中。 tcl86t.dlltk86t.dll DLL 显然也需要移到那里。

您可以通过以下修改您的setup.py 脚本来做到这一点:

build_exe_options = "packages": ["winsound", "random", "time", "tkinter", "math"],
                     "include_files": [('tcl86t.dll', os.path.join('lib', 'tcl86t.dll')),
                                       ('tk86t.dll', os.path.join('lib', 'tk86t.dll'))]

【讨论】:

以上是关于使用 cx_Freeze 时出现“ImportError: DLL load failed: The specified module could not be found”,即使添加了 tcl86t的主要内容,如果未能解决你的问题,请参考以下文章

使用 cx_freeze 转换为 *.exe 时出现 SSL 异常

cx_Freeze 将 Python 和 Pygame 文档编译为 .exe 文件时出现奇怪的错误

将 .py 转换为 .exe 时出现 cx_Freeze 错误

使用 cx_Freeze 时出现“ImportError: DLL load failed: The specified module could not be found”,即使添加了 tcl86t

cx_freeze Matplotlib 问题

Python cx_Freeze 错误“没有名为 'cx_Freeze.util' 的模块”