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 ответов:
согласно 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.
чтобы заставить это работать с
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, это выглядит так:
обратите внимание, что в 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
вот именно!
для всех, кто использует 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.