【发布时间】:2020-01-30 14:03:04
【问题描述】:
这是我在 StackOverflow 上的第一篇帖子,如果您有任何改进我的帖子的建议,我会尽量使其正确和完整,我很乐意接受。
我在运行使用 Tkinter 的 Python 编写的代码时遇到问题。
我将尝试详细描述我的操作,以便于识别错误。
我在 Coursera 开设了一门关于 DSP(数字信号处理)的课程,建议安装一个用 python(和一点点 C)编写的工具。我正在使用 Arch Linux。
Github 上的链接: sms-tools repo
使用 pyenv/virtualenv/virtualenvwrapper 我使用 Python 3.7.5 创建了一个环境,如存储库的“如何使用”部分中的建议。
我通过 pip 在我的环境中安装了所需的库:
%pip install ipython numpy matplotlib scipy cython
我在“/sms-tools/software/models/utilFunctions_C”中编译了一些C函数
使用以下命令的目录:
%python compileModule.py build_ext --inplace
最后,我在目录“/sms-tools/software/models_interface”中运行模型GUI
%python models_GUI.py
我收到以下消息:
Traceback (most recent call last):
File "models_GUI.py", line 6, in <module>
from Tkinter import * ## notice capitalized T in Tkinter
ModuleNotFoundError: No module named 'Tkinter'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "models_GUI.py", line 9, in <module>
from tkinter import * ## notice lowercase 't' in tkinter here
File "~/.pyenv/versions/3.7.5/lib/python3.7/tkinter/__init__.py", line 36, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
我现在将描述我解决问题的一些尝试:
看着Tkinter section in Python Wiki我尝试安装Tcl和Tk。
%sudo pacman -S tk
但它已经安装了。之后我尝试使用 pip 安装:
%pip install tk
和
%pip install tkinter
错误依旧。
我还尝试使用以下代码创建符号链接:
%ln -s /usr/lib/python3.8/lib-dynload/_tkinter.cpython-38-x86_64-linux-gnu.so _tkinter.cpython-38-x86_64-linux-gnu.so
符号链接是在以下文件夹中创建的:
~/.ve/Coursera_DSP/lib/python3.7/lib-dynload
和
.pyenv/versions/3.7.5/lib/python3.7/lib-dynload
但我仍然遇到同样的错误。
如果有人有任何建议,我将不胜感激,对于语言错误,我深表歉意,因为英语不是我的母语。
在网上不断搜索后,我认为问题与pyenv和TCL/TK有关。 我对这个主题不太了解,但我怀疑在 virtualenv 创建环境时,python 已经失去了与 TCL/TK 的联系。这有意义吗?
【问题讨论】:
-
观察:tkinter 需要是 Python 安装的一部分,不能通过 pip 安装。
-
你不需要将
tkinter从外部安装到python中,它是一个内置库。其次,我在您发布的错误中看到您在程序中的某处使用Tkinter和大写T,而您应该使用tkinter和小t。 -
@DaniyalAhmad 这是一个错误处理程序,它会为 python 2.x 尝试 Tkinter,如果失败,它会为 python 3.x 尝试 tkinter
-
@DaniyalAhmad Tkinter 通常(例如,在 Linux 中,或带有 MacPorts 或 Homebrew 的 mac OS 中)作为 Python 的单独包安装。包的确切名称各不相同。 重要的事情是在构建任何虚拟环境之前进行设置,因为 tkinter 的包装很奇怪。 (这比 Tcl/Tk 本身要复杂得多,它们很容易作为用户重新定位和安装,无需特殊技巧。)
标签: python-3.x linux tkinter tcl pyenv