在Ubuntu上的python3.6中安装tkinter

lap*_*pin 20 python tkinter tcl python-3.x python-3.6

+--------+-----------------------------------+
|   OS   |           Ubuntu 12.04            |
+--------+-----------------------------------+
| Python | 2.7, 3.2 and source installed 3.6 |
+--------+-----------------------------------+
Run Code Online (Sandbox Code Playgroud)

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

启动后python3.6我尝试了import tkinter,这给出了以下错误.即使help('modules')返回了包含tkinter的模块列表.

 import tkinter
 ModuleNotFoundError: No module named '_tkinter'
Run Code Online (Sandbox Code Playgroud)

我尝试过同样的做法python3.2并且没有错误. tkinter._tkinter给出了python3.2的tkinter库的位置

我进入了python3.6包含所有库文件的目录,实际上它丢失了tkinter.so目标文件.

我该如何修复错误?

我想让tkinter/tkagg工作,因为它似乎已经安装了所有模块/包.

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

还有其他方法可以告诉我python3.6Tcl/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和wish确认了.

Enc*_*t97 12

从终端运行:

sudo apt-get install python3.6-tk
Run Code Online (Sandbox Code Playgroud)

或者只是重新安装completly:

sudo apt-get install python3.6
Run Code Online (Sandbox Code Playgroud)


mac*_*acm 9

Python版本3.6.4(Ubuntu 18.04 LTS)

sudo add-apt-repository main

sudo apt-get install python3-tk
Run Code Online (Sandbox Code Playgroud)

  • 搜索了将近2个小时后,这才是对我真正有用的解决方案。谢谢 (2认同)

Bil*_*adj 5

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

在 Ubuntu 16.04 LTS 上,我有 Python 3.5.2 和 Python 2.7.12,但我想尝试一下 Python3.6(例如,出于各种原因,例如这个)。所以我依靠这篇文章

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 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
Run Code Online (Sandbox Code Playgroud)

我尝试按照上面的消息要求安装 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.
Run Code Online (Sandbox Code Playgroud)

显然,我仍然无法在 Python 3.6 中使用 tkinter。如何解决这个问题?

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

sudo apt-get install python36-tk
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package python36-tk
Run Code Online (Sandbox Code Playgroud)

第二个有效:

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) ...
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题:

~/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
>>> 
Run Code Online (Sandbox Code Playgroud)