Tkinter: "Python не может быть настроен для Tk"


сегодня я хотел начать работать с Tkinter, но у меня есть некоторые проблемы.

Python 3.2 (r32:88445, Mar 28 2011, 04:14:07) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tkinter import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.2/tkinter/__init__.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter

Итак, как я могу настроить свой Python 3.2 для работы с Tkinter?

11 54

11 ответов:

согласно http://wiki.python.org/moin/TkInter:

Если он не работает с "No module named _tkinter", ваша конфигурация Python должна быть изменена, чтобы включить этот модуль (который является модулем расширения, реализованным в C). Делай не редактировать модули / настройки (он устарел). Возможно, вам придется установить Tcl и Tk (при использовании RPM также установите RPM-devel) и/или отредактируйте setup.py скрипт для указания правильных местоположений, где находится Tcl/Tk установленный. Если вы устанавливаете Tcl / Tk в местах по умолчанию, просто перезапуск "make" должен построить расширение _tkinter.

под Arch / Manjaro просто установите пакет tk:

sudo pacman -S tk

установить tk-devel (или аналогично названный пакет) перед построением Python.

чтобы заставить это работать с pyenv на Ubuntu 16.04, я должен был:

$ sudo apt-get install python-tk python3-tk tk-dev

затем установите версию Python, которую я хотел:

$ pyenv install 3.6.2

тогда я мог бы импортировать tkinter просто отлично:

import tkinter

была такая же проблема на Fedora с Python 2.7. Оказывается, некоторые дополнительные пакеты требуются:

sudo dnf install tk-devel tkinter

после установки пакетов, Этот Привет, мир пример, кажется, работает нормально на Python 2.7:

$ cat hello.py
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
$ python --version
Python 2.7.8
$ python hello.py

и через пересылку X11, это выглядит так:

Hello World through X11

обратите внимание, что в Python 3 имя модуля записывается в нижнем регистре, и, вероятно, требуются другие пакеты...

from tkinter import *

я столкнулся с этой проблемой на python 2.7.9.
Чтобы исправить это, я установил tk и tcl, а затем перестроил код python и переустановил, и во время настройки я установил путь для tk и tcl явно:

./configure --with-tcltk-includes="-I/usr/include" --with-tcltk-libs="-L/usr/lib64 -ltcl8.5 -L/usr/lib64 -ltk8.5"

кроме того, Целая статья для процесса установки python: построение Python из исходного кода

О, я просто следил за решением Ignacio Vazquez-Abrams предложил установить tk-dev перед созданием python. (Построение Python-3.6.1 из исходного кода на Ubuntu 16.04.)

были предварительно скомпилированные объекты и двоичные файлы, которые я построил вчера, хотя я не убирал объекты и просто строил снова по тому же пути сборки. И это прекрасно работает.

sudo apt install tk-dev
(On the python build path)
(No need to conduct 'make clean')
./configure
make
sudo make install

вот именно!

sudo apt-get install python3-tk

для всех, кто использует Windows и подсистему Windows для Linux, убедитесь, что при запуске команды python из командной строки она не случайно запускает установку python из WSL! Это вызвало у меня настоящую головную боль. Быстрая проверка Вы можете сделать для этого просто
which <python command you're using>
Если это печатает что-то вроде /usr/bin/python2 даже если вы находитесь в powershell, это, вероятно, то, что происходит.

Я думаю, что наиболее полным ответом на это является принятый ответ, найденный здесь:

как заставить tkinter работать с установкой Ubuntu Python 2.7 По умолчанию?

Я понял это после того, слишком много времени потратил на эту проблему, так надеюсь, я смогу спасти кого-то еще от хлопот.

Я обнаружил, что этот старый отчет об ошибке считается недействительным, в котором упоминается точное проблема у меня была, у меня была Tkinter.py, но он не смог найти модуль _tkinter: http://bugs.python.org/issue8555

Я установил пакет tk-dev с apt-get и перестроил Python с помощью ./ настройка, создание и установка в каталоге Python2.7.3. И теперь мой Python2. 7 может импортировать Tkinter, yay!

Я немного обижен, что пакет tk-dev вообще не упоминается документация по установке Python.... Ниже Еще один полезный ресурс по отсутствующим модулям в Python, если, как и я, кто-то должен обнаружьте, что они отсутствуют больше, чем _tkinter.

этот симптом также может возникнуть, когда более поздняя версия python (2.7.13, например) была установлена в /usr/local/bin "наряду с" версией python выпуска, а затем последующее обновление операционной системы (скажем, Ubuntu 12.04 --> Ubuntu 14.04) не удается удалить обновленный python там.

чтобы исправить эту imcompatibility, нужно

a) удалить обновленную версию python в /usr / local/bin;

b) удалите python-idle2. 7; и

c) переустановите python-idle2.7.