Python/Tkinter : ModuleNotFoundError: No module named '_tkinter'
Python/Tkinter : ModuleNotFoundError: No module named '_tkinter'
这是我的第一个 post Whosebug,如果您有任何改进我的建议,我会尽量使其正确和完整 post 我很乐意接受。
我在使用 运行 编写使用 Tkinter 的 Python 代码时遇到问题。
我会尽量详细描述我的操作,以便于识别错误。
我在 Coursera 开设了一门关于 DSP(数字信号处理)的课程,建议安装一个用 python 编写的工具(和一点 C)。我正在使用 Arch Linux.
link 在 Github 上:
sms-tools repo
使用 pyenv/virtualenv/virtualenvwrapper 我创建了一个带有 Python 3.7.5 的环境,正如存储库 "How to use" 部分中所推荐的那样。
我通过 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
错误依旧。
我还尝试使用以下代码创建一个符号link:
%ln -s /usr/lib/python3.8/lib-dynload/_tkinter.cpython-38-x86_64-linux-gnu.so _tkinter.cpython-38-x86_64-linux-gnu.so
symlink 是在以下文件夹中创建的:
~/.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 失去了联系。这有意义吗?
由于找不到任何解决方案,我只是卸载了整个环境系统(pyenv pyenv-virtualenv virtualenv 和 virtualenvwrapper)并安装了 conda。现在一切正常。
可能我搞砸了 pyenv 安装。
谢谢大家:D
这里是 分步指南 使 IDLE 和 tkinter
工作。在 macOS Catalina 上为我工作。应该很容易适应 Linux 环境:
- 使用 Homebrew 安装
tcl-tk
。在shell运行brew install tcl-tk
- 在shell运行
echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.zshrc
- 通过退出
Terminal
应用或 运行 source ~/.zshrc
重新加载 shell
- 重新加载后检查
tck-tk
在 $PATH
中。 运行echo $PATH | grep --color=auto tcl-tk
。结果你应该看到你的 $PATH 内容突出显示 tcl-tk
- 现在我们 运行 来自步骤 #1 的 Homebrew 输出的三个命令
- 在shell运行
export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"
- 在shell运行
export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"
- 在shell运行
export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"
- 如果您的 Python 版本已经通过
pyenv
安装,则使用 pyenv uninstall <your python version>
将其卸载。例如。 pyenv uninstall 3.8.2
- 设置
python-build
将使用的环境变量。在 shell 运行 PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"
注意:将来使用 tck-tk
实际安装 Homebrew 的版本。在发布时 8.6
是实际的
- 最终安装 Python 和
pyenv
以及 pyenv install <version>
。例如。 pyenv install 3.8.2
测试
- 在shell运行
pyenv global <verion that you've just installed>
- 现在检查 IDLE。在shell运行
idle
。您应该看到没有任何警告的 IDLE window 和 "text printed in red".
- 现在检查
tkinter
。在shell运行python -m tkinter -c "tkinter._test()"
。你应该看到测试 window 就像图片上的那样:
就是这样!
我的环境:
检查执行上述步骤是否出了问题:
- macOS 卡特琳娜
zsh
(包含在 macOS Catalina 中)= "shell" 以上
- Homebrew(按照Homebrew官网说明安装)
pyenv
(根据 GitHub 的 pyenv
官方自述文件更新了 Homebrew 和 PATH)
- Python
3.8.x
- 3.9.x
(使用 pyenv install <version>
命令安装)
对于未来遇到这个问题的人...
我正在使用 Catalina 并遇到错误:
ModuleNotFoundError: 没有名为“_tkinter”的模块
尝试导入某些模块时。例如,我在尝试导入 pdf2docx 时遇到错误,即使它已经安装好了。
我卸载了 python 3.x 的所有版本,并遵循了上面 nickolay 的逐步建议。
现在它就像一个魅力!谢谢尼古拉!
我的 linux mint 20 基本安装包含 python3。
在 windows 机器上,这包括 tkinter
包。
我的解决方案是
sudo apt-get install python-tk
或
sudo apt-get install python3-tk
直播又是晴天
mac 蒙特雷 (M1)
brew install python-tk
python 3.9.10
这是我的第一个 post Whosebug,如果您有任何改进我的建议,我会尽量使其正确和完整 post 我很乐意接受。
我在使用 运行 编写使用 Tkinter 的 Python 代码时遇到问题。
我会尽量详细描述我的操作,以便于识别错误。
我在 Coursera 开设了一门关于 DSP(数字信号处理)的课程,建议安装一个用 python 编写的工具(和一点 C)。我正在使用 Arch Linux.
link 在 Github 上: sms-tools repo
使用 pyenv/virtualenv/virtualenvwrapper 我创建了一个带有 Python 3.7.5 的环境,正如存储库 "How to use" 部分中所推荐的那样。
我通过 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
错误依旧。
我还尝试使用以下代码创建一个符号link:
%ln -s /usr/lib/python3.8/lib-dynload/_tkinter.cpython-38-x86_64-linux-gnu.so _tkinter.cpython-38-x86_64-linux-gnu.so
symlink 是在以下文件夹中创建的:
~/.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 失去了联系。这有意义吗?
由于找不到任何解决方案,我只是卸载了整个环境系统(pyenv pyenv-virtualenv virtualenv 和 virtualenvwrapper)并安装了 conda。现在一切正常。 可能我搞砸了 pyenv 安装。
谢谢大家:D
这里是 分步指南 使 IDLE 和 tkinter
工作。在 macOS Catalina 上为我工作。应该很容易适应 Linux 环境:
- 使用 Homebrew 安装
tcl-tk
。在shell运行brew install tcl-tk
- 在shell运行
echo 'export PATH="/usr/local/opt/tcl-tk/bin:$PATH"' >> ~/.zshrc
- 通过退出
Terminal
应用或 运行source ~/.zshrc
重新加载 shell
- 重新加载后检查
tck-tk
在$PATH
中。 运行echo $PATH | grep --color=auto tcl-tk
。结果你应该看到你的 $PATH 内容突出显示tcl-tk
- 现在我们 运行 来自步骤 #1 的 Homebrew 输出的三个命令
- 在shell运行
export LDFLAGS="-L/usr/local/opt/tcl-tk/lib"
- 在shell运行
export CPPFLAGS="-I/usr/local/opt/tcl-tk/include"
- 在shell运行
export PKG_CONFIG_PATH="/usr/local/opt/tcl-tk/lib/pkgconfig"
- 在shell运行
- 如果您的 Python 版本已经通过
pyenv
安装,则使用pyenv uninstall <your python version>
将其卸载。例如。pyenv uninstall 3.8.2
- 设置
python-build
将使用的环境变量。在 shell 运行PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'"
注意:将来使用tck-tk
实际安装 Homebrew 的版本。在发布时8.6
是实际的 - 最终安装 Python 和
pyenv
以及pyenv install <version>
。例如。pyenv install 3.8.2
测试
- 在shell运行
pyenv global <verion that you've just installed>
- 现在检查 IDLE。在shell运行
idle
。您应该看到没有任何警告的 IDLE window 和 "text printed in red".
- 现在检查
tkinter
。在shell运行python -m tkinter -c "tkinter._test()"
。你应该看到测试 window 就像图片上的那样:
就是这样!
我的环境:
检查执行上述步骤是否出了问题:
- macOS 卡特琳娜
zsh
(包含在 macOS Catalina 中)= "shell" 以上- Homebrew(按照Homebrew官网说明安装)
pyenv
(根据 GitHub 的pyenv
官方自述文件更新了 Homebrew 和 PATH)- Python
3.8.x
-3.9.x
(使用pyenv install <version>
命令安装)
对于未来遇到这个问题的人...
我正在使用 Catalina 并遇到错误:
ModuleNotFoundError: 没有名为“_tkinter”的模块
尝试导入某些模块时。例如,我在尝试导入 pdf2docx 时遇到错误,即使它已经安装好了。
我卸载了 python 3.x 的所有版本,并遵循了上面 nickolay 的逐步建议。
现在它就像一个魅力!谢谢尼古拉!
我的 linux mint 20 基本安装包含 python3。
在 windows 机器上,这包括 tkinter
包。
我的解决方案是
sudo apt-get install python-tk
或
sudo apt-get install python3-tk
直播又是晴天
mac 蒙特雷 (M1)
brew install python-tk
python 3.9.10