如何为 python 3.8 安装 tkinter?

如何为 python 3.8 安装 tkinter?

我在 Ubuntu 16.04 上有 Python 3.8。

我安装了 python3-tk(它是在 matplotlib 中显示图表所必需的):

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 12 not upgraded.

和python3.8-tk:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
python3.8-tk is already the newest version (3.8.2-1+xenial1).
0 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.

但是没有找到:

$ python3.8 -m tkinter
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/runpy.py", line 184, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/usr/local/lib/python3.8/runpy.py", line 143, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/usr/local/lib/python3.8/runpy.py", line 110, in _get_module_details
    __import__(pkg_name)
  File "/usr/local/lib/python3.8/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'

正确的安装方法是什么?

答案1

如果您使用 apt(通过 ppa:deadsnakes/ppa)安装了 python3.8,那么也可以使用 apt 安装,库的名称是python3.8-tk

sudo apt install python3.8-tk

就我而言,它解决了这个问题。例如,现在我可以在需要 tkinter 的 python3.8 中使用 matplotlib。

答案2

重新编译并重新安装 python3.8,指定包含 tcl、tk 和库的文件夹的路径。

sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev python-tk python3-tk tk-dev

cd ~/Downloads
wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
tar -xvf Python-3.8.2.tgz

cd Python-3.8.2

./configure按以下方式编辑文件:替换...下一行:

  --with-tcltk-includes='-I/usr/include'
  --with-tcltk-libs='-L/usr/lib'

./configure
make -j2    # replace 2 by number of processor cores you have
sudo make install

$ python3.8
Python 3.8.2 (default, May 11 2020, 14:30:03) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> 

apt安装在 16.04上的Python 3.8pyenv不包含 tkinter,我认为或者存在一些错误导致无法导入它。只有重建才有帮助。以前我使用过内置 Python 3.8 版本的 20.04,它支持 tkinter,但只安装了额外的软件包,就像 16.04 上的 Python 3.5 一样。

Ankur A Sharma 表示还需要安装 python3.8-tk。我忘了提了。但对于 16.04 来说,这还不够,至少对我来说是这样。

OP 评论中的额外要求:

sudo ./configure --with-tcltk-includes='-I/usr/include -I/usr/include/tcl' --with-tcltk-libs='-L/usr/lib -ltcl -ltk' --enable-optimizations

答案3

在 Ubuntu 20.4 到 21.4 上这将起作用

sudo apt-get 安装 python3-tk

答案4

在 Ubuntu 16.04 上,(卸载 python3.8 和 tkinter,然后)使用 ppa 安装:

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

在 Ubuntu 18.04 及更高版本上:

sudo apt install python3.8 python3-tk

相关内容