為 python3.4.2 配置 tkinter

為 python3.4.2 配置 tkinter

我最近在安裝最新的python3.X時遇到了問題。使用之後的套件
安裝它 ,我嘗試導入模組但沒有成功。 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。

相關內容