не удалось импортировать tkinter в python3.6 [duplicate]

1) Используя справочную функцию

Войдите в приглашение python и введите следующую команду:

>>>help("modules")

В этом списке будут указаны все модули, установленные в системе. Вам не нужно устанавливать какие-либо дополнительные пакеты, чтобы их перечислить, но вам нужно вручную найти или отфильтровать требуемый модуль из списка.

2) Использовать зависание с пипеткой

sudo apt-get install python-pip
pip freeze

Несмотря на то, что вам необходимо установить дополнительные пакеты для использования этого метода, этот метод позволяет легко искать или фильтровать результат с помощью команды grep. например pip freeze | grep feed.

Вы можете использовать любой удобный для вас метод.

51
задан Maciej Ziarko 28 March 2011 в 14:10
поделиться

11 ответов

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

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

24
ответ дан Sandro Munda 19 August 2018 в 10:39
поделиться
  • 1
    Как вы редактируете скрипт setup.py? Как вы делаете повторный запуск? Я пытаюсь сделать это на Mac, и я обнаружил, что должен просто вернуть mac и получить машину для Windows. – Drew Rush 16 February 2014 в 11:04
  • 2
    В моем случае это было вызвано обновлением tk. Он использовался только matplotlib, и это может быть обходным путем: stackoverflow.com/a/4935945/1959808 – Ioannis Filippidis 18 November 2015 в 07:31
  • 3
    setup.py находится в каталоге исходного кода python – dasons 8 September 2017 в 13:47

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

1
ответ дан bbukaty 19 August 2018 в 10:39
поделиться

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

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

Кроме того, вся статья для Процесс установки python: Построение Python из Source

2
ответ дан Billal BEGUERADJ 19 August 2018 в 10:39
поделиться

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

Как заставить 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, yay!

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

0
ответ дан Community 19 August 2018 в 10:39
поделиться

О, я только что последовал за решением, которое Игнасио Васкес-Абрамс предлагает, чтобы установить tk-dev перед созданием питона. (Построение 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

Вот и все!

1
ответ дан David Jung 19 August 2018 в 10:39
поделиться

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

41
ответ дан Ignacio Vazquez-Abrams 19 August 2018 в 10:39
поделиться
  • 1
    На Ubuntu запустите 'sudo apt-get install tk-dev', а затем повторно запустите make – pycoder112358 17 January 2012 в 00:01
  • 2
    @ pycoder112358: Я сделал это, но он все еще говорит мне ImportError: No module named _tkinter, когда я пытаюсь импортировать tkinter. Я использую python3.4.0, скомпилированный из источника на ubuntu 13.10. – ARF 4 April 2014 в 23:02
  • 3
    Что tk-devel? Вы должны дать хотя бы минимальное объяснение того, почему это должно быть полезно в этом случае. – nbro 8 August 2015 в 09:20
  • 4
    В качестве комментария к другим, «перед построением Python» здесь важно. Когда вы устанавливаете модуль, вам нужно перестроить python, прежде чем он найдет модуль. – mjp 9 September 2016 в 20:09
  • 5
    На арка linux запустите 'sudo pacman -S tk' – Philip Kirkbride 5 April 2017 в 14:14

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

sudo pacman -S tk
39
ответ дан Jabba 19 August 2018 в 10:39
поделиться
  • 1
    Отлично! Ошибка, которую я получаю в Manjaro, и что это исправлено: ImportError: libtk8.6.so: cannot open shared object file: No such file or directory. – DearVolt 7 September 2017 в 19:25

Чтобы заставить это работать с pyenv на Ubuntu 16.04, мне пришлось:

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

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

$ pyenv install 3.6.2

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

import tkinter
3
ответ дан PaulMest 19 August 2018 в 10:39
поделиться

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

Чтобы исправить эту несовместимость, нужно

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

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

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

0
ответ дан s.w.s. 19 August 2018 в 10:39
поделиться

Была такая же проблема с 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 *
3
ответ дан Stefan Saru 19 August 2018 в 10:39
поделиться
  • 1
    sudo: dnf: команда не найдена (я ubuntu, это разница?) – mjp 27 April 2016 в 23:48
sudo apt-get install python3-tk
1
ответ дан stybl 19 August 2018 в 10:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: