【问题标题】:Tkinter: "Python may not be configured for Tk"Tkinter:“可能没有为 Tk 配置 Python”
【发布时间】:2011-07-24 11:39:32
【问题描述】:

今天我想开始使用 Tkinter,但我遇到了一些问题。

Python 3.2 (r32:88445, Mar 28 2011, 04:14:07) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tkinter import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.2/tkinter/__init__.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter

那么如何配置我的 Python 3.2 以使用 Tkinter?

【问题讨论】:

  • 虽然这不能直接回答您的问题,但如果您希望在 Linux 上使用最新的 Python,使用预编译的二进制文件(例如 ActivePython - 包括 Tkinter)将节省大量时间。
  • 每个 Linux 发行版都有一个官方的 python 包。除非您需要特定的东西,否则实际上不鼓励使用 3rd 方二进制文件。也就是说,在 python 中支持 Tk 可能只需要一两个命令,但我需要知道你运行的是哪种 Linux。

标签: python python-3.x tkinter


【解决方案1】:

在构建 Python 之前安装 tk-devel(或类似名称的包)。

【讨论】:

  • 在 Ubuntu 上运行 'sudo apt-get install tk-dev',然后重新运行 make
  • @pycoder112358:我做到了,但是当我尝试导入 tkinter 时它仍然告诉我ImportError: No module named _tkinter。我在 ubuntu 13.10 上使用从源代码编译的 python3.4.0。
  • tk-devel 是什么?您应该至少对它在这种情况下有用的原因给出一个最低限度的解释。
  • 作为对其他人的评论,“在构建 Python 之前”在这里很重要。当你安装模块时,你需要重建 python 才能找到模块。
【解决方案2】:

根据http://wiki.python.org/moin/TkInter

如果失败并显示“没有名为 _tkinter 的模块”,则需要修改 Python 配置以包含此模块(这是用 C 实现的扩展模块)。不要不要编辑模块/设置(它已过时)。您可能必须安装 Tcl 和 Tk(使用 RPM 时,还要安装 -devel RPM)和/或编辑 setup.py 脚本以指向安装 Tcl/Tk 的正确位置。如果您在默认位置安装 Tcl/Tk,只需重新运行“make”即可构建 _tkinter 扩展。

【讨论】:

  • 如何编辑 setup.py 脚本?你如何重新制作?我正在尝试在 mac 上执行此操作,但我发现我应该只返回 mac 并获得一台 windows 机器。
  • 就我而言,这是由tk 的升级引起的。仅供matplotlib使用,可以绕行:stackoverflow.com/a/4935945/1959808
  • setup.py在python源码目录下
  • 我的电脑里大约有 50 个 setup.py 文件,哪个是正确的?
【解决方案3】:

在 Fedora 上使用 Python 2.7 时遇到了同样的问题。原来需要一些额外的包:

sudo dnf install tk-devel tkinter

安装软件包后,这个hello-world 示例似乎在 Python 2.7 上运行良好:

$ cat hello.py
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
$ python --version
Python 2.7.8
$ python hello.py

并且通过X11转发,看起来是这样的:

注意在Python 3中,模块名是小写的,可能还需要其他包...

from tkinter import *

【讨论】:

  • sudo: dnf: command not found(我是ubuntu,有这个区别吗?)
【解决方案4】:

在 Arch/Manjaro 下只需安装包 tk:

sudo pacman -S tk

【讨论】:

  • 完美!我在 Manjaro 上遇到的错误是:ImportError: libtk8.6.so: cannot open shared object file: No such file or directory
  • 在 windows 上怎么样?
【解决方案5】:

我认为最完整的答案是在这里找到的公认答案:

How to get tkinter working with Ubuntu's default Python 2.7 install?

我在这个问题上花费了太多时间后才弄清楚,所以 希望我可以为其他人省去麻烦。

我发现这个旧的错误报告被认为是无效的,它提到了确切的 我遇到的问题,我有 Tkinter.py,但它找不到 模块_tkinter:http://bugs.python.org/issue8555

我使用 apt-get 安装了 tk-dev 包,并使用重建 Python ./configure、make、make install在Python2.7.3目录下。和 现在我的 Python2.7 可以导入 Tkinter,耶!

我有点恼火的是 tk-dev 包根本没有提到 Python 安装文档.... 下面是另一个有用的 如果像我一样,有人应该在 Python 中缺少模块的资源 发现他们丢失的不仅仅是 _tkinter。

【讨论】:

    【解决方案6】:

    当更高版本的 python(例如 2.7.13)已安装在 /usr/local/bin 中“与”发布 python 版本“一起”时,也会出现此症状,然后进行后续操作系统升级(例如, Ubuntu 12.04 --> Ubuntu 14.04) 无法在此处删除更新的 python。

    要解决这种不兼容性,必须

    a) 删除 /usr/local/bin 中的更新版本的 python;

    b) 卸载 python-idle2.7;和

    c) 重新安装 python-idle2.7。

    【讨论】:

      【解决方案7】:

      哦,我刚刚遵循了 Ignacio Vazquez-Abrams 建议的解决方案,即在构建 python 之前安装 tk-dev。 (在 Ubuntu 16.04 上从源代码构建 Python-3.6.1。)

      虽然我昨天构建了预编译的对象和二进制文件,但我没有清理对象,只是在相同的构建路径上再次构建。而且效果很好。

      sudo apt install tk-dev
      (On the python build path)
      (No need to conduct 'make clean')
      ./configure
      make
      sudo make install
      

      就是这样!

      【讨论】:

        【解决方案8】:
        sudo apt-get install python3-tk
        

        【讨论】:

        • 在 windows 上怎么样?
        【解决方案9】:

        要让它在 Ubuntu 16.04 和 18.04 上与 pyenv 一起工作,我必须:

        $ sudo apt-get install python-tk python3-tk tk-dev
        

        然后安装我想要的Python版本:

        $ pyenv install 3.6.2
        

        然后我可以很好地导入 tkinter:

        import tkinter
        

        【讨论】:

        • 对于 MacOS X,您只需要brew install python-tk
        【解决方案10】:

        我在 python 2.7.9 上遇到了这个问题。
        为了修复它,我安装了 tk 和 tcl,然后重建 python 代码并重新安装,在配置期间,我明确设置了 tk 和 tcl 的路径,通过:

        ./configure --with-tcltk-includes="-I/usr/include" --with-tcltk-libs="-L/usr/lib64 -ltcl8.5 -L/usr/lib64 -ltk8.5"
        

        还有一篇关于python安装过程的文章:Building Python from Source

        【讨论】:

          【解决方案11】:

          对于使用 Windows 和适用于 Linux 的 Windows 子系统的任何人,请确保当您从命令行运行 python 命令时,它不会意外地从 WSL 运行 python 安装!这让我刚才很头疼。您可以对此进行快速检查
          which &lt;python command you're using&gt;
          如果即使您在 powershell 中也打印出类似 /usr/bin/python2 的内容,那可能就是发生了什么。

          【讨论】:

            【解决方案12】:

            如果您在运行 Amazon Linux 操作系统的 AWS 实例上运行,那么为我解决此问题的神奇命令是

            sudo yum install tkinter
            

            如果您想确定您的 Linux 版本,请尝试 cat /etc/*release

            【讨论】:

            • 在 windows 上怎么样?
            【解决方案13】:

            看来很多人似乎都遇到过这个问题(包括我在内),我发现错误是编译 python 时没有在我的系统上安装 Tkinter。

            This post 描述了如何解决问题:

            1. 删除虚拟环境/python 分发
            2. 使用sudo apt-get install tk-dev(deb)或sudo pacman -S tk(arch/manjaro)安装 Tkinter
            3. 然后继续编译python。

            这对我来说很神奇。

            【讨论】:

            • 这是正确的解决方案,谢谢!我仍然不知道为什么最受好评的答案会让你经历很多麻烦,甚至没有解释如何做到这一点,并且一个简单的命令行被埋在底部......
            • 感谢您的客气话。希望其他人可能会发现这比已经完成的所有猜测更有用的是这个线程:/
            【解决方案14】:

            即使在安装 python-tk、python3-tk 之后,我仍然收到错误,您的 python 没有为 Tk 配置。

            所以我额外安装了 tk8.6-dev 然后我再次构建我的 Python,再次运行以下命令: 制作, 进行安装。

            当我这样做时,我在屏幕上看到它正在构建 _tkinter 和相关模块的消息。完成后,我尝试了“import tkinter”,它成功了。

            【讨论】:

              【解决方案15】:

              MacOS 解决方案

              在尝试了一堆东西之后,这就是它的最终效果:

              $ brew install python-tk
              

              【讨论】:

              • 在 Catalina 上 brew 安装对我有用
              • pip3 包tk 是TensorKit,见here。我认为这没有帮助。
              • brew install 从我的 macOS 终端完成了这项工作,一旦我回到 Pycharm,“无模块”错误就消失了。
              • 天哪,谢谢。我尝试了很多东西,最后,它成功了。
              【解决方案16】:

              我也遇到了类似的问题。我通过在我的系统中安装python-tk 解决了这个问题。

              mac 指令:brew install python-tk.

              【讨论】:

                【解决方案17】:

                安装 Tkinter


                python -m pip install tk-tools
                

                sudo apt install python3-tk
                

                代码

                from tkinter import *
                
                root = Tk()
                root.title('My App')
                # Code
                root.mainloop()
                

                【讨论】:

                  【解决方案18】:

                  现在我知道 ubuntu 发生了什么,

                  按照这些步骤解决问题

                  1. 检查你的python版本python3 --version
                  2. 让我们想象一下你有 python 3.10
                  3. 然后使用以下命令为 python 版本安装 Python-tk
                  4. sudo apt install python3.10-tk

                  如果你有python3.8那么简单sudo apt install python{"use your python version here"}-tk

                  【讨论】:

                    猜你喜欢
                    • 2011-09-13
                    • 2014-04-28
                    • 1970-01-01
                    • 2017-09-20
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-09-04
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多