Python 3.x Python/Tkinter:ModuleNotFoundError:没有名为'_特金特';

Python 3.x Python/Tkinter:ModuleNotFoundError:没有名为'_特金特';,python-3.x,linux,tkinter,tcl,pyenv,Python 3.x,Linux,Tkinter,Tcl,Pyenv,这是我的第一篇文章StackOverflow,我会尽量使它正确和完整,如果你有任何建议来改进我的文章,我会欣然接受 我在运行使用Tkinter的Python编写的代码时遇到问题 我将尝试详细描述我的行为,以便于识别错误 我在Coursera开始了一门关于DSP(数字信号处理)的课程,建议安装一个用python编写的工具(和一点C语言)。我正在使用ArchLinux Github上的链接: 使用pyenv/virtualenv/virtualenvwrapper,我用Python 3.7.5创建

这是我的第一篇文章StackOverflow,我会尽量使它正确和完整,如果你有任何建议来改进我的文章,我会欣然接受

我在运行使用Tkinter的Python编写的代码时遇到问题

我将尝试详细描述我的行为,以便于识别错误

我在Coursera开始了一门关于DSP(数字信号处理)的课程,建议安装一个用python编写的工具(和一点C语言)。我正在使用ArchLinux

Github上的链接:

使用pyenv/virtualenv/virtualenvwrapper,我用Python 3.7.5创建了一个环境,正如存储库“如何使用”一节中所建议的那样

我通过pip在我的环境中安装了所需的库:

%pip安装ipython numpy matplotlib scipy cython

我在“/sms工具/软件/模型/utilFunctions\u C”中编译了一些C函数

使用以下命令创建目录:

%python compileModule.py build_ext--inplace

最后,我在目录“/sms tools/software/models\u interface”中运行模型GUI

%python模型\u 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'
回溯(最近一次呼叫最后一次):
文件“models_GUI.py”,第6行,在
从Tkinter导入*##注意Tkinter中大写的T
ModuleNotFoundError:没有名为“Tkinter”的模块
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“models_GUI.py”,第9行,在
从tkinter导入*##注意tkinter中的小写字母“t”
文件“~/.pyenv/versions/3.7.5/lib/python3.7/tkinter/\uuuu init\uuuuu.py”,第36行,在
导入_tkinter#如果失败,您的Python可能无法配置为Tk
ModuleNotFoundError:没有名为“\u tkinter”的模块
现在,我将描述我解决该问题的一些尝试:

我试着安装Tcl和Tk

%sudo pacman-S tk

但它已经安装好了。之后,我尝试使用pip安装:

%pip安装tk

%pip安装tkinter

误差保持不变

我还尝试使用以下代码创建符号链接:
%ln-s/usr/lib/python3.8/lib-dynload//u tkinter.cpython-38-x86\u 64-linux-gnu.so\u tkinter.cpython-38-x86\u 64-linux-gnu.so

符号链接是在以下文件夹中创建的:

~/.ve/Coursera\u 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的安装搞砸了


谢谢大家:这里是使空闲和工作的逐步指南。在macOS Catalina为我工作。应易于适应Linux环境:

  • 使用自制软件安装tcl tk。在shell中运行brew安装tcl tk
  • 在shell中运行
    echo'export PATH=“/usr/local/opt/tcl-tk/bin:$PATH”>~/.zshrc
  • 退出
    终端
    应用程序或运行
    源~/.zshrc
  • 重新加载后,检查
    tck tk
    是否位于
    $PATH
    中。运行
    echo$PATH | grep--color=auto-tcl-tk
    。因此,您应该看到突出显示了
    tcl-tk
    的$PATH内容
  • 现在,我们从步骤1的自制输出中运行三个命令
  • 在shell中运行导出LDFLAGS=“-L/usr/local/opt/tcl-tk/lib”
  • 在shell中运行导出CPPFLAGS=“-I/usr/local/opt/tcl-tk/include”
  • 在shell中运行export-PKG\u-CONFIG\u-PATH=“/usr/local/opt/tcl-tk/lib/pkgconfig”
  • 如果您的Python版本已经安装了
    pyenv
    ,请使用
    pyenv uninstall
    卸载它。例如,
    pyenv卸载3.8.2
  • 设置将由python构建使用的环境变量。在shell中运行
    PYTHON\u CONFIGURE\u OPTS=“--with tcltk includes='-I/usr/local/opt/tcl-tk/includes'--with tcltk libs='-L/usr/local/opt/tcl-tk/lib-ltcl8.6-ltk8.6'
    注意:在将来使用实际与自制软件一起安装的
    tck tk
    版本。在发布时,
    8.6
    是实际的
  • 最后,使用
    pyenv安装
    pyenv安装
    安装Python。例如,
    pyenv安装3.8.2
  • 测试


  • 在shell run
    pyenv global中,观察到:tkinter需要是Python安装的一部分,不能由pip安装。您不需要在Python外部安装
    tkinter
    ,它是一个内置库。其次,我在你发布的错误中看到,你在程序的某个地方使用了大写字母
    T
    Tkinter
    ,而你应该使用
    Tkinter
    和一个小的
    T
    @DaniyalAhmad,这是一个错误处理程序,它为Python2.x尝试Tkinter,如果失败,则为Python3尝试Tkinter。x@DaniyalAhmadTkinter通常是(例如,在Linux或带有MacPorts或Homebrew的mac OS中)作为Python的独立软件包安装的东西。包裹的确切名称各不相同。最重要的是在构建任何虚拟环境之前进行设置,因为tkinter的包装很奇怪。(真是太棒了