ImportError DLL 加载失败导入 _tkinter

Posted

技术标签:

【中文标题】ImportError DLL 加载失败导入 _tkinter【英文标题】:ImportError DLL load failed importing _tkinter 【发布时间】:2012-02-02 05:28:46 【问题描述】:

我正在使用 python 2.7.2 和 windows 7。我搜索了互联网、帮助和其他资源,但我找不到我的问题的答案。

我的一个源导入tkinter,而这个导入_tkinter。此时它说ImportError DLL load failed

 Traceback (most recent call last): File "NERO/show_image.py", line 13,
 in <module> import Tkinter File "C:\Python27\lib\lib-tk\Tkinter.py", line 38,
 in <module> import FixTk File "C:\Python27\lib\lib-tk\FixTk.py", line 65,
 in <module> import _tkinter ImportError: DLL load failed: %1 is not a valid Win32 application.
 2012-Jan-04 12:27:21.889374 (M) [python] Finished process 

我搜索了 _tkinter,我在 Python27/libs 中发现它是一个 lib 文件。

在许多网站上都说要安装tk/tcltkinter,但我没有找到单独的Windows 安装。

使用来自http://www.python.org/getit/releases/2.7/ 的 Windows x86 MSI 安装程序 (2.7)。在 Windows 7 64 位中。 python版本为32位。

【问题讨论】:

您的计算机是 64 位的吗?使用官方二进制安装程序时,您无需安装任何东西即可使 python tkinter 开箱即用。您能发布实际的完整回溯吗? 是的,我已经安装了 windows 7 64。python 版本是 32 位。回溯(最后一次调用):文件“NERO/show_image.py”,第 13 行,在 中 import Tkinter 文件“C:\Python27\lib\lib-tk\Tkinter.py”,第 38 行,在 > 导入 FixTk 文件“C:\Python27\lib\lib-tk\FixTk.py”,第 65 行,在 中导入 _tkinter ImportError:DLL 加载失败:%1 不是有效的 Win32 应用程序。 2012-Jan-04 12:27:21.889374 (M) [python] 完成过程 不确定您的问题是什么,但这是我在与 32/64 位发生冲突时遇到的典型错误。对不起,我不能帮助更多。也许你应该尝试清理你的实际设置并重新安装 64 位的 python。 这个问题在我的 64 位 Windows 中疯狂地出现在 64 位 python 可执行文件中:( 【参考方案1】:

我在 Windows 7 64 位上导入 Tkinter 时遇到了类似的问题 - 似乎 64 位库仍在以前的 64 位 python 安装的 libs 文件夹中。

正确卸载 64 位 python,然后使用 32 位安装程序修复解决了我的问题 - 你不需要使用 64 位 python。

【讨论】:

稍微阐述一下:我有同样的问题;事实证明,当我拿到它时,我的机器上有一个工厂安装的 32 位版本的 Python 2.7,然后我在它上面安装了一个 64 位版本而没有注意到。这导致混合版本的库都在“Python27”目录中——不漂亮。卸载它们并重新安装一个版本就可以了。 这似乎是答案的最佳选择......它解决了我的问题。也许给@david一些功劳并将其标记为正确答案?【参考方案2】:

重新安装 Python。

如果还是不行,还有一个简单的解决办法:

    卸载当前的 python。从您的 C: 驱动器中完全删除 Python27 文件夹。 从http://www.python.org/download/ 下载并安装 64 位版本的 Python。 下次只要有 64 位应用程序可供选择,就不要将 32 位应用程序与 64 位操作系统混用!

【讨论】:

我不知道这是不是一个很好的建议,难道很多库不能在 64 位 python 上正常工作吗? @AlexS 我对 Python 有一些不满,但这不是其中之一。任何用 python 编写的库都可以正常运行,我还没有找到一个用 C 编写的库,它不会在安装时尝试为本地架构进行编译和/或以牺牲性能为代价退回到纯 python 解决方案。 【参考方案3】:

我在一个简单的应用程序中尝试使用 matplotlib 时遇到了这个错误。

卸载 Python 并将其文件夹从 C-Drive 中删除。 下载并安装 64 位 python。 按照这个在你的机器上安装 pip。 http://www1.cmc.edu/pages/faculty/alee/cs40/penv/installFlaskOnWindows.html 这终于对我有用了

【讨论】:

【参考方案4】:

我遇到了同样的问题并且能够卸载 Python 2.7(使用 Windows 7 的“卸载”服务),然后从这里重新安装它: python-2.7.6.msi

另外,如果您担心在您的 python 库中确保 64 位一致性,那么您可以找到以下library list site to be a great resource。它有许多 64 位版本的 python 库。

【讨论】:

【参考方案5】:

请不要为此重新安装 Python。一个简单的修复可以解决这个问题,如下所示:

    在 Python27\Lib\site-packages\matplotlib\mpl-data\matplotlibrc 中找到 matplotlibrc 文件 使用记事本打开 将后端参数更改为“后端:Qt5Agg”

它会解决的。无需重新安装。

【讨论】:

太棒了!这对我有用。你知道幕后发生了什么吗? 新的matplotlib安装与Tk后端不兼容(matplotlib默认),因此通过这些步骤我们将默认后端更改为Qt5Agg【参考方案6】:

无需重新安装即可解决

1-将这 3 行添加到您的 setup.py 中:

...
import os
os.environ['TCL_LIBRARY']= r'C:\<your python folder>\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\<your python folder>\tcl\tk8.6'
...
setup(
... 
) 

2-tcl86t.dlltk86t.dllC:\&lt;your python folder&gt;\DLLs 复制到&lt;your project folder&gt;(您有批处理文件,setup.py)。

3- 在 setup.py 中将 "include_files": ["tcl86t.dll", "tk86t.dll"] 添加到 option,类似于:

options=  'build_exe':'packages':[.....], "include_files": ["tcl86t.dll", "tk86t.dll"],

注意:如果您没有在步骤 2 中提到的DLLs 文件夹中找到 tcl86t.dlltk86t.dll,然后再次尝试搜索它,但这次使用 DLLs 文件夹中的研究选项卡。

【讨论】:

您是否已经在没有 PYTHON 的目标机器上尝试过这个?这是如何获得投票的?【参考方案7】:

我遇到了类似的问题。我的 Python 版本是 2.7.12 和 64 位,我使用的是 Windows 10、64 位操作系统。 我尝试导入 Tkinter,但我得到的是

ImportError: DLL load failed: %1 is not a valid Win32 application

我卸载了 Python 并删除了它的所有痕迹。然后我安装了 Python 2.7.14(32 位),这似乎解决了我的问题。我不再收到此错误消息。

【讨论】:

【参考方案8】:

我的机器上安装了很多python包,所以我不想卸载并重新安装整个python,我按照以下步骤解决了问题:

    将 C:\Python27 主文件夹更改为其他名称,例如 C:\Python27_old

    在您的计算机上安装新的 Python27(32 位)

    将 tcl 和 DLLs 文件夹从新安装的 python 复制到旧的(在此步骤之前,请复制 C:\Python27_old 的 tcl 和 DLL 以在后续步骤中遇到任何问题时将其恢复)

C:\Python27\tcl 复制并替换到C:\Python27_old

C:\Python27\DLLs 复制并替换到 C:\Python27_old

    删除 C:\Python27 将 C:\Python27_old 重命名为 C:\Python27

请注意从您的 tcl 和 DLLs 文件夹中获取备份以将其恢复,以防您遇到任何进一步的问题。

【讨论】:

【参考方案9】:

删除 64 位 python 并修复 32 位 python 对我有用。操作系统:64 位 Windows Server 2008。

【讨论】:

【参考方案10】:

我也遇到了这个问题,因为我使用的是 64 位 python。可能python 64位没有很好的支持。

我的方法是解决它:

    卸载 python 64 位。 安装 python 32 位。 卸载 64 位软件包。 pip uninstall xxx。 安装 32 位软件包。 pip install xxx

【讨论】:

【参考方案11】:

对于 Windows 10,

    卸载所有版本的 Python 使用 PATH 变量安装 Python 3.x(您的最新版本) python -mpip install -U matplotlib 安装没有 PATH 变量的 Python x.x(您的其他版本)

完成。再次尝试运行您的脚本。

【讨论】:

【参考方案12】:

如果 Python 是由 OsGeo4W 安装的,那么您还应该在 OsGeo4W 安装工具中安装 python-tcltk 和/或 python3-tcltk 软件包。

【讨论】:

以上是关于ImportError DLL 加载失败导入 _tkinter的主要内容,如果未能解决你的问题,请参考以下文章

“ImportError:导入 _openmp_helpers 时 DLL 加载失败”?

ImportError:导入 _rolling_ball_cy 时 DLL 加载失败:

TensorFlow ImportError:导入_pywrap_tensorflow_internal时DLL加载失败:找不到指定的模块

ImportError:DLL 加载失败:找不到指定的过程。 (导入sklearn)

ImportError:导入聚合时DLL加载失败:找不到指定的模块

ImportError:在 vscode 中使用导入 syft 导入 lib 时 DLL 加载失败