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?
23 ответа
Согласно http://wiki.python.org/moin/TkInter:
Если произойдет сбой с "Нет модуля с именем _tkinter", необходимо изменить конфигурацию Python, чтобы включить этот модуль (который является модулем расширения, реализованным в C). Не редактируйте модули / настройки (они устарели). Возможно, вам придется установить Tcl и Tk (при использовании RPM также установите RPM -devel) и / или отредактируйте скрипт setup.py, чтобы он указывал на правильные места, где установлен Tcl / Tk. Если вы устанавливаете Tcl / Tk в расположениях по умолчанию, просто перезапустите "make", чтобы создать расширение _tkinter.
Решение для MacOS
Попробовав кучу вещей, это наконец сработало:
$ brew install python-tk
Вы также можете попробовать установить его с помощью pip:
$ pip3 install tk
Под 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
Так что, похоже, у многих была эта проблема (в том числе и у меня), и я обнаружил, что ошибка в том, что Tkinter не был установлен в моей системе при компиляции python.
В этом сообщении описывается, как решить проблему:
- Удаление виртуальной среды / дистрибутива Python
- установить Tkinter с
sudo apt-get install tk-dev
(для deb) илиsudo pacman -S tk
(для арки / манджаро) - Затем снова приступайте к компиляции python.
Это творило для меня чудеса.
так как я пока не могу комментировать, вот мой ответ на другой пост :
так как я все еще использую python 3.9, этот код работает для меня:
brew install python-tk@3.9
при использованииbrew install python-tk
brew установит [email protected] только с ключом
если вы управляете Python с помощью https://asdf-vm.com/ в Linux, то:
Федора
$ asdf uninstall python 3.10.10
$ sudo dnf install tk-devel
$ asdf install python 3.10.10
Убунту
$ asdf uninstall python 3.10.10
$ sudo apt-get install tk-dev
$ asdf install python 3.10.10
Я тоже столкнулся с подобной проблемой. Я решил это установив
python-tk
в моей системе.
Команда для mac:
brew install python-tk
.
О, я просто следовал решению, предложенному Игнасио Васкесом-Абрамсом: установить 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
Это оно!
Была такая же проблема на Fedora с Python 2.7. Оказывается, требуются дополнительные пакеты:
sudo dnf install tk-devel tkinter
После установки пакетов этот пример hello-world работает нормально на 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 *
Установка Tkinter
python -m pip install tk-tools
или
sudo apt install python3-tk
Код
from tkinter import *
root = Tk()
root.title('My App')
# Code
root.mainloop()
Я столкнулся с этой проблемой на 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 из Source
теперь я понял, что происходит в Ubuntu,
Выполните этот шаг, чтобы решить проблему
- проверьте свою версию питона
python3 --version
- Давайте представим, что у вас есть Python 3.10.
- Затем установите Python-tk для версии Python с помощью следующей команды.
-
sudo apt install python3.10-tk
просто, если у вас есть python3.8, тогда
sudo apt install python{"use your python version here"}-tk
Я думаю, что самый полный ответ на это - принятый ответ, найденный здесь:
Как заставить tkinter работать с установленной по умолчанию Ubuntu Python 2.7?
Я понял это после того, как потратил слишком много времени на эту проблему, так что, надеюсь, я смогу спасти кого-то еще.
Я обнаружил, что это старое сообщение об ошибке, считающееся недействительным, в котором упоминалась точная проблема, с которой я столкнулся, у меня был Tkinter.py, но он не смог найти модуль _tkinter: http://bugs.python.org/issue8555
Я установил пакет tk-dev с помощью apt-get и перестроил Python, используя./configure, make и make install в каталоге Python2.7.3. И теперь мой Python2.7 может импортировать Tkinter, ура!
Я немного раздражен, что пакет tk-dev вообще не упоминается в документации по установке Python... ниже приведен еще один полезный ресурс по отсутствующим модулям в Python, если, как и я, кто-то должен обнаружить, что им не хватает более _tkinter.
Если вы работаете с экземпляром AWS, работающим под управлением Amazon Linux OS, волшебная команда, чтобы исправить это для меня, была
sudo yum install tkinter
Если вы хотите определить свою сборку Linux, попробуйте cat /etc/*release
Любой, кто использует Windows и Windows Subsystem для Linux, должен убедиться, что при запуске команды python из командной строки случайно не запускается установка python из WSL! Это дало мне головную боль только сейчас. Быстрая проверка, которую вы можете сделать, это простоwhich <python command you're using>
Если это печатает что-то вроде /usr/bin/python2
даже если вы в PowerShell, это, вероятно, то, что происходит.
Если вы используете Manjaro(Arch Linux), выполните приведенную ниже команду в своем терминале.
sudo pacman -S tk
Этот признак также может возникать, когда более поздняя версия python (например, 2.7.13) была установлена в /usr/local/bin "вместе с" версией Python выпуска, а затем с последующим обновлением операционной системы (скажем, Ubuntu 12.04). -> Ubuntu 14.04) не может удалить обновленный питон там.
Чтобы исправить эту несовместимость, нужно
а) удалить обновленную версию python в /usr/local/bin;
б) удалить python-idle2.7; а также
в) переустановить python-idle2.7.
Даже после установки python-tk, python3-tk я получал сообщение об ошибке, ваш python не настроен для Tk.
Итак, я дополнительно установил tk8.6-dev. Затем я снова собираю свой Python, снова запускаю следующее: make, make install.
Когда я это сделал, я увидел на экране сообщения о том, что он создает _tkinter и связанные с ним модули. Как только это было сделано, я попробовал import tkinter, и это сработало.
В моем случае pyenv был установлен, но я об этом не знал. Мне нужно было удалить и переустановить версию Python через pyenv, чтобы исправить конфигурацию tkinter после установки правильной версии.python3.x-tk
.
Вам нужно установить tkinter для python3.
На федоре pip3 install tkinter --user
возвращается Could not find a version that satisfies the requirement
... так что я должен командовать: dnf install python3-tkinter
, Это решило мою проблему