为 python3.4.2 配置 tkinter

为 python3.4.2 配置 tkinter

我最近在安装最新的python3.X时遇到了一个问题。使用After中的包
安装了它 ,安装后我尝试导入模块但没有成功。 Python-3.4.2.tar.xzpython.orgtkinter

输出为import tkinter

>>> 导入 tkinter
回溯(最近一次调用最后一次):
  文件“”,第 1 行,位于
  文件“/usr/local/lib/python3.4/tkinter/__init__.py”,第 38 行,位于
    import _tkinter # 如果失败,你的 Python 可能没有配置为 Tk
导入错误:没有名为“_tkinter”的模块

我也尝试了以下解决方案:

但这些都无济于事。
在尝试这些解决方案时,如果注意到错误提示:

import _tkinter # 如果失败,你的 Python 可能没有配置为 Tk

然后我谷歌了一下,发现.
阅读检查你的 Tkinter 支持部分,Step 1失败并卡在了这一行

如果您在默认位置安装 Tcl/Tk,只需重新运行“make”即可构建 _tkinter 扩展。

关于上面这行,我的问题是:在
哪里可以找到一个 make 文件来运行make命令?

并且,我该如何配置tkinter以便 Python3.4.2 接受它?


编辑:

我忘了提一下,但import tkinter它确实适用于 Ubuntu 14.04.1 中 Python 的默认安装(Python-3.4.0)

答案1

为了使用_tkinter模块从源代码构建 python3.4.2,您需要安装以下构建依赖项:

sudo apt-get install tk8.6-dev

然后您要做的就是make再次运行以添加_tkinter支持,因为setup.py文件将自动检测 tk/tcl 标头并创建模块:

~/Downloads/Python-3.4.2$ make
running build
running build_ext
building '_tkinter' extension
gcc -pthread -fPIC -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -DWITH_APPINIT=1 -I/usr/include/tcl8.6 -I/usr/X11/include -I./Include -I. -IInclude -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/sylvain/Downloads/Python-3.4.2/Include -I/home/sylvain/Downloads/Python-3.4.2 -c /home/sylvain/Downloads/Python-3.4.2/Modules/_tkinter.c -o build/temp.linux-x86_64-3.4/home/sylvain/Downloads/Python-3.4.2/Modules/_tkinter.o
gcc -pthread -fPIC -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -DWITH_APPINIT=1 -I/usr/include/tcl8.6 -I/usr/X11/include -I./Include -I. -IInclude -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/sylvain/Downloads/Python-3.4.2/Include -I/home/sylvain/Downloads/Python-3.4.2 -c /home/sylvain/Downloads/Python-3.4.2/Modules/tkappinit.c -o build/temp.linux-x86_64-3.4/home/sylvain/Downloads/Python-3.4.2/Modules/tkappinit.o
gcc -pthread -shared build/temp.linux-x86_64-3.4/home/sylvain/Downloads/Python-3.4.2/Modules/_tkinter.o build/temp.linux-x86_64-3.4/home/sylvain/Downloads/Python-3.4.2/Modules/tkappinit.o -L/usr/X11/lib -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -ltk8.6 -ltcl8.6 -lX11 -o build/lib.linux-x86_64-3.4/_tkinter.cpython-34m.so

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _dbm                  _gdbm              
_lzma                 _sqlite3                                 
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
[...]

现在您可以在python3.4.2中导入tkinter:

~/Downloads/Python-3.4.2$ ./python 
Python 3.4.2 (default, Oct 30 2014, 11:34:17) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> 

原始答案:

除非你真的需要 python3.4.2,否则我只会使用 14.04 上的默认 python3 版本(3.4.0

然后您要做的就是安装以下软件包:

sudo apt-get install python3-tk tk

并通过这种方式启动python解释器:

/usr/bin/python3

否则,您将始终获得所安装的版本/usr/local(3.4.2)。

现在在 python3 中导入 tk 应该可以工作了:

$ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> 

答案2

如果您只需要 tkinter 用于 matplotlib,您也可以使用不同的后端,如 Egg:import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt

查看更多详细信息这里

答案3

sudo apt-get install python3-tk tk  

pyenv install 3.5.0  

就是这样

答案4

你知道,我使用的是 Ubuntu 16.04。除了第一个答案之外,从 python 文件中执行以下操作(提取后):

./configure #(there will be a configure file)
make
make test
sudo make install

我第一次做过这些事情但仍然显示这些错误:

IDLE can't import Tkinter.  Your Python may not be configured for Tk.

python3 -m idlelib.idle从 cmd运行时。

所以我做了:

sudo apt-get install tk-dev

或者你可以做

sudo apt-get install tk8.6-dev

然后再

./configure
make
make test
sudo make install

这解决了这个问题,因为下次我运行时 python3 -m idlelib.idle,它打开了 IDLE。

相关内容