【问题标题】:Install tkinter in python3.6 on Ubuntu在 Ubuntu 上的 python3.6 中安装 tkinter
【发布时间】:2017-07-26 04:05:58
【问题描述】:
+--------+-----------------------------------+
|   OS   |           Ubuntu 12.04            |
+--------+-----------------------------------+
| Python | 2.7, 3.2 and source installed 3.6 |
+--------+-----------------------------------+

由于 Python 3 有 2 个版本,因此从存储库安装的任何内容都不适用于 Python 3.6。存储库中最新版本的 Python 是 3.2,所以我需要源安装或通过 pip3.6。

启动python3.6 后,我尝试import tkinter,出现以下错误。尽管help('modules') 返回了一个包含 tkinter 的模块列表。

 import tkinter
 ModuleNotFoundError: No module named '_tkinter'

我尝试在python3.2 中做同样的事情,结果没有错误tkinter._tkinter 给出了 python3.2 的 tkinter 库的位置

我 cd'd 进入包含所有库文件的 python3.6 目录,并且确实缺少 tkinter.so 目标文件。

如何修复错误?

我想让 tkinter/tkagg 工作,因为似乎所有模块/包都已安装。

在谷歌搜索了一些之后,我发现我需要再次构建python3.6,但这次在运行配置时使用 Tcl/Tk 选项。我宁愿不。从头开始安装python3.6 大约需要 1 小时。

还有其他方法可以告诉python3.6 Tcl/Tk 的位置吗?

问题不在于告诉 python tcl/tk 在哪里。在弄乱了python3.6的源代码,然后比较了python3.6和python3.2之后,我发现tkinter调用的_tkinter不是python文件,它是python在安装过程中构建的.so(共享对象)文件通过使用 gcc 的 setup.py,不知何故可能涉及 distutils。

新的更合适的问题是我如何构建, _tkinter.cpython-36m-i386-linux-gnu.so 来自 tcl/tk?

注意:我确实安装了 tcl/tk,我已使用 tclsh 确认并希望。

【问题讨论】:

  • 试试from tkinter import *
  • 刚刚做了,给出了同样的错误。 @johnsonlai 另外,我不会使用 tkinter,matplotlib 是。
  • 我知道我应该这样做,@Marvo,但我需要在短时间内完成这项工作。
  • apt get install python3.6-tk
  • @Boki,这样不行。 12.04的ppa最新的python是3.2,deadsnakes的ppa最新的是3.5,只有核心python。为了能够 apt-get,包必须存在于 ppa 中。

标签: python python-3.x tkinter tcl python-3.6


【解决方案1】:

从终端运行:

sudo apt-get install python3.6-tk

或完全重新安装:

sudo apt-get install python3.6

【讨论】:

    【解决方案2】:

    Python 版本 3.6.4(Ubuntu 18.04 LTS)

    sudo add-apt-repository main

    sudo apt-get install python3-tk
    

    【讨论】:

    • 在搜索了将近 2 个小时之后,这才是真正适合我的解决方案。谢谢
    【解决方案3】:

    我遇到了和你类似的问题,我正在提供它的详细信息以及我是如何解决的。

    在 Ubuntu 16.04 LTS 上,我有 Python 3.5.2 和 Python 2.7.12,但我想试验 Python3.6(出于各种原因,例如 this one)。所以我就靠这个post

    sudo add-apt-repository ppa:deadsnakes/ppa
    sudo apt-get update
    sudo apt-get install python3.6
    

    当我尝试使用 tkinter 运行模块时,我收到以下错误消息:

    Traceback (most recent call last):
      File "/usr/lib/python3.6/tkinter/__init__.py", line 37, in <module>
        import _tkinter
    ModuleNotFoundError: No module named '_tkinter'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "bill.py", line 3, in <module>
        from tkinter import Canvas, Label, Tk, StringVar, Button, LEFT
      File "/usr/lib/python3.6/tkinter/__init__.py", line 39, in <module>
        raise ImportError(str(msg) + ', please install the python3-tk package')
    ImportError: No module named '_tkinter', please install the python3-tk package
    

    我尝试按照上面的消息要求安装 tkinter:

    sudo apt-get install python3-tk
    [sudo] password for begueradj: 
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    python3-tk is already the newest version (3.5.1-1).
    0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
    

    显然,我仍然不能将 tkinter 用于 Python 3.6。如何解决这个问题?

    我的第一次盲目尝试没有成功:

    sudo apt-get install python36-tk
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package python36-tk
    

    第二个有效:

    sudo apt-get install python3.6-tk
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    Suggested packages:
      tix python3.6-tk-dbg
    The following NEW packages will be installed:
      python3.6-tk
    0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded.
    Need to get 74.6 kB of archives.
    After this operation, 165 kB of additional disk space will be used.
    Get:1 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu xenial/main amd64 python3.6-tk amd64 3.6.5-1+xenial1 [74.6 kB]
    Fetched 74.6 kB in 0s (301 kB/s)        
    Selecting previously unselected package python3.6-tk:amd64.
    (Reading database ... 324106 files and directories currently installed.)
    Preparing to unpack .../python3.6-tk_3.6.5-1+xenial1_amd64.deb ...
    Unpacking python3.6-tk:amd64 (3.6.5-1+xenial1) ...
    Setting up python3.6-tk:amd64 (3.6.5-1+xenial1) ...
    

    这解决了我的问题:

    ~/python3.6
    Python 3.6.5 (default, Mar 29 2018, 03:28:50) 
    [GCC 5.4.0 20160609] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import tkinter
    >>> 
    

    【讨论】:

    • 神秘地这对我不起作用。 apt install python3.6-tk 说“Note, selecting 'python3-tk' instead of 'python3.6-tk'”,然后继续安装 python3-tk
    【解决方案4】:

    Python 版本 3.6.4 (Ubuntu 18.04 LTS)

    我遇到了同样的错误:找不到 tkinter 模块。即使在尝试通过 pip 安装之后 $ pip install tkinter 我收到了这个错误,在下面

    Collecting tkinter
      Could not find a version that satisfies the requirement tkinter (from versions: )
    No matching distribution found for tkinter
    

    我这样做是为了尝试通过运行命令为 Python3.6 安装 tkinter。它对我有用。 $ sudo apt-get install python3.6-tk

    【讨论】:

      【解决方案5】:

      在 ubuntu 20.04 上安装了 python3.8.2,尝试导入 tkinter 但失败了。得到这个错误: da0xxx:~/python_trn/pygui$ python3 -m tkinter /usr/bin/python3: 没有名为 tkinter 的模块

      但跑了:

      da0xxx:~/python_trn/pygui$ sudo apt-get install python3-tk

      现在可以导入 tkinter!

      da0xxx:~/python_trn/pygui$ python3 Python 3.8.2(默认,2020 年 4 月 27 日,15:53:34) [GCC 9.3.0] 在 Linux 上 输入“help”、“copyright”、“credits”或“license”了解更多信息。

      将 tkinter 导入为 tk

      谢谢!

      【讨论】:

        【解决方案6】:

        试试这几行,可能会有帮助

        os.environ['TCL_LIBRARY'] = r'C:\Users\asus\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
        os.environ['TK_LIBRARY'] = r'C:\Users\asus\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'
        

        执行前重新检查路径。

        【讨论】:

          猜你喜欢
          • 2019-03-28
          • 2022-12-03
          • 2017-06-02
          • 2020-04-17
          • 2014-12-29
          • 2020-11-18
          • 1970-01-01
          • 2017-05-26
          • 2018-05-23
          相关资源
          最近更新 更多