您的位置:首页技术文章
文章详情页

当使用cx_Freeze和tkinter时,我得到:“ DLL加载失败:找不到指定的模块。” (Python 3.5.3)

【字号: 日期:2022-08-07 10:50:06浏览:2作者:猪猪
如何解决当使用cx_Freeze和tkinter时,我得到:“ DLL加载失败:找不到指定的模块。” (Python 3.5.3)?

找到了解决方案!

我必须将tk86t.dll和tcl86t.dll文件从python目录的DLLs文件夹复制到带有尝试编译的main.py的build文件夹中。

这与

set TCL_LIBRARY=C:UsersVergilTheHuragokAppDataLocalProgramsPythonpython35tcltcl8.6 set TK_LIBRARY=C:UsersVergilTheHuragokAppDataLocalProgramsPythonpython35tcltk8.6

在我的compile.bat的顶部,以及'include_files': ['tcl86t.dll', 'tk86t.dll'] 在setup.py的build_exe_options中,似乎已经解决了这个问题。

这是我当前的setup.py:

from cx_Freeze import setup, Executable import sysbuild_exe_options = {'packages': ['files', 'tools'], 'include_files': ['tcl86t.dll', 'tk86t.dll']}base = None if sys.platform == 'win32': base = 'win32gui'setup(name='Name', version='1.0', description='Description', options={'build_exe': build_exe_options}, executables=[Executable('main.py', base=base)], package_dir={’’: ’’}, )

这是我的compile.bat(已更新以显示所有步骤):

@echo offset TCL_LIBRARY=C:UsersVergilTheHuragokAppDataLocalProgramsPythonpython36-32tcltcl8.6set TK_LIBRARY=C:UsersVergilTheHuragokAppDataLocalProgramsPythonpython36-32tcltk8.6RD /S /Q 'C:UsersVergilTheHuragokDesktopPythonProjectCompiledbin'mkdir 'C:UsersVergilTheHuragokDesktopPythonProjectCompiledbin'xcopy /s 'C:UsersVergilTheHuragokAppDataLocalProgramsPythonpython36-32DLLstcl86t.dll' 'C:UsersVergilTheHuragokDesktopPythonProjectCompiledbintcl86t.dll'xcopy /s 'C:UsersVergilTheHuragokAppDataLocalProgramsPythonpython36-32DLLstk86t.dll' 'C:UsersVergilTheHuragokDesktopPythonProjectCompiledbintk86t.dll'cd 'C:UsersVergilTheHuragokDesktopPythonProject'cxfreeze main.py --target-dir 'C:UsersVergilTheHuragokDesktopPythonProjectCompiledbin' --target-name 'launch.exe'pause解决方法

当使用cx_Freeze和Tkinter时,出现以下消息:

File 'C:UsersVergilTheHuragokAppDataLocalProgramsPythonPython35-32libtkinter__init__.py',line 35,in <module>import _tkinter # If this fails your Python may not be configured for TkImportError: DLL load failed: The specified module could not be found.

注意事项:

我想使用Python 3+(当前使用3.5.3,32位)。不管实际如何,都不在乎特定版本。我的项目有多个文件需要编译。据我所知,这让我留下了cx_Freeze或Nuitka。努伊特卡有自己的问题。我正在使用Windows 10家庭版64位

这是我当前的setup.py:

from cx_Freeze import setup,Executable import sysbuild_exe_options = {'packages': ['files','tools']}base = None if sys.platform == 'win32':base = 'Win32GUI'setup(name='Name',version='1.0',description='Description',options={'build_exe': build_exe_options},executables=[Executable('main.py',base=base)],package_dir={’’: ’’},)

我已经尝试了来自互联网各个角落的许多解决方案。包括但不仅限于:

多个版本的python(以及相应的cx_Freeze / Tkinter版本)32位和64位版本用easygui替换Tkinter(显然easygui需要Tkinter来工作)检查PATH变量重新启动计算机(不知道我的期望)卸载其他版本的python并修复正确的版本

将以下内容放入我的编译bat文件(正确的路径):

set TCL_LIBRARY=C:UsersVergilTheHuragokAppDataLocalProgramsPythonPython35-32tcltcl8.6

set TK_LIBRARY=C:UsersVergilTheHuragokAppDataLocalProgramsPythonPython35-32tcltk8.6

在我的setup.py中放置以下内容:

options={'build_exe': {'includes': ['tkinter']}}

随着:

include_files = [r'C:UsersVergilTheHuragokAppDataLocalProgramsPythonPython35-32DLLstcl86t.dll', r'C:UsersVergilTheHuragokAppDataLocalProgramsPythonPython35-32DLLstk86t.dll']

(是的,这些以一种或另一种方式包含在setup()中)

感谢您的帮助,我们将不胜感激。是的,我已经在该站点上查看了针对该问题的几乎所有解决方案。希望有人可以帮助我找到另一种解决方案,因为我的问题似乎一直存在。

标签: Python 编程