Ошибка matplotlib - нет модуля с именем tkinter


195

Я попытался использовать пакет matplotlib через Pycharm IDE на Windows 10. когда я запускаю этот код:

from matplotlib import pyplot

Я получаю следующую ошибку:

ImportError: No module named 'tkinter'

Я знаю, что в python 2.x он назывался Tkinter, но это не проблема - я только что установил новый python 3.5.1.

РЕДАКТИРОВАТЬ: кроме того, я также попытался импортировать 'tkinter' и 'Tkinter' - ни один из них не сработал (оба вернули сообщение об ошибке, которое я упомянул).


Вы импортировали tkinter import Tkinterили import tkinter?
Авион

1
да, забыл упомянуть, что ... получил то же сообщение об ошибке
noamgot

ImportError: No module named '_tkinter', please install the python3-tk package?
knh170

@ knh170 нет, просто сообщение, показанное в моем оригинальном сообщении.
Ноамгот

4
Похоже, вы использовали пользовательскую установку. Перезапустите установщик Python, нажмите Modify, а затем отметьте td / tk и IDLE
omilus

Ответы:


221
sudo apt-get install python3-tk

Затем,

>> import tkinter # all fine

Редактировать :

Для Windows, я думаю, проблема в том, что вы не установили полный пакет Python. Так как Tkinter должен поставляться с Python из коробки. Смотрите: http://www.tkdocs.com/tutorial/install.html

Я предлагаю установить ipython , который предоставляет мощную оболочку и необходимые пакеты.


ЭТО РАБОТАЕТ! Спасибо! (Я установил анаконду по ссылке, которую вы
указали

3
если вы на CentOS поле, командаsudo yum install python36u-tkinter.x86_64
n1c9

Я использую pycharm, и я получил ту же ошибку относительно пропавшего пакета. После установки tkinter пакет matplotlib работал нормально. Спасибо @ knh170
debaonline4u

Я работал с Ubuntu 18.04, используя python3 в venv. Просто установите его: sudo apt-get install python3-tk Затем вы можете протестировать это из оболочки python3: из matplotlib import pyplot
serfer2

1
@ knh170 Можем ли мы установить tkinter с помощью pip? Я не могу найти ничего, связанного с этим
Скотт Ян

99

ты можешь использовать

import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt

если вы не хотите использовать tkinterвообще.

Также не забудьте использовать %matplotlib inlineверхнюю часть вашего ноутбука, если используете его.

РЕДАКТИРОВАТЬ: aggэто другой бэкэнд, как tkinterдля matplotlib.


1
Это хорошо, потому что из-за работы с сервером мне не требуется X11, но некоторые установленные мной программы зависят от matplotlib.
rien333

2
Фантастика! Если кому-то интересно, как это работает
Мэтт

2
это решение не работает, если вы хотите что-то построить
Бейхан Гюль

5
Просто добавьте к этому ответу: aggэто не-GUI бэкэнд, поэтому plt.show()не будет иметь никакого эффекта. Но вы все равно можете plt.savefig(filename)посмотреть файл для быстрой отладки.
Нико

1
Спасает меня время от решения этой ошибки tkinter.
annoying_squid

35

На Centos имена пакетов и команды разные. Вам нужно будет сделать:

sudo yum install tkinter

Решить проблему.


32

Для пользователей Windows нет необходимости снова загружать установщик. Просто сделайте следующее:

  1. Зайдите в меню «Пуск», введите « Программы и компоненты» ,
  2. Выберите версию Python (для меня это Python 3.6.5 (64-разрядная версия ) ),
  3. Щелкните правой кнопкой мыши, нажмите Изменить ,
  4. Нажмите Изменить ,
  5. Выберите td / tk и IDLE (который устанавливает tkinter) и нажмите « Далее» .

Ждите установки, и все готово.


4
Спасибо. Это самый полезный и правильный ответ среди других. (Для пользователей ОС Windows, конечно)
Руслан К.

20

Почти все ответы, которые я искал по этой проблеме, говорят, что Python в Windows поставляется с уже установленными tkinter и tcl, и мне не повезло, пытаясь загрузить или установить их с помощью pip или сайта actviestate.com. В конце концов я обнаружил, что когда я устанавливал python с помощью бинарного установщика, я отключил модуль, связанный с TCL и tkinter. Итак, я снова запустил бинарный установщик и решил изменить версию Python, выбрав эту опцию. Тогда не нужно ничего делать вручную. Если вы зайдете в свой терминал Python, то следующие команды должны показать вам версию tkinter, установленную с вашим Python:

import tkinter
import _tkinter
tkinter._test()

1
Верный. Установка Windows - единственная система, где это может произойти, как это было в моем случае. +1. Это, безусловно, стоит отметить для пользователей с установками Windows.
Маркушобсон

18

Если вы используете fedora, то сначала установите tkinter

sudo dnf install python3-tkinter

Я не думаю, что вам нужно импортировать tkinter впоследствии, я также предлагаю вам использовать virtualenv

$ python3 -m venv myvenv
$ source myvenv/bin/activate

И добавьте необходимые пакеты, используя pip


10

На CentOS 7 и Python 3.4 команда sudo yum install python34-tkinter

На Redhat 7.4 с Python 3.6 команда sudo yum install rh-python36-python-tkinter


3
На Centos 7 и Python 3.6 командаsudo yum install python36u-tkinter.x86_64
Роб Холл

8

Для пользователей Windows: перезапустите установщик. Выберите Изменить. Установите флажок для tcl / tk и IDLE. В описании для этого написано "устанавливает tkinter"


8

В Ubuntu, в начале 2018 года, нет python3.6-tkнормальных дистрибутивов Ubuntu (xenial / 16.04), поэтому даже если у вас есть более ранние версии, python-tkэто не будет работать.

Мое решение было использовать настроить все с python 3.5:

 sudo apt install python3.5-tk
 virtualenv --python=`which python3.5` python-env
 source python-env/bin/activate
 pip install -r requirements.txt

И теперь matplotlibмогу найти tkinter.

РЕДАКТИРОВАТЬ :

Мне просто нужно 3,6 после всего, и хитрость была в том, чтобы:

sudo apt install tk-dev

и затем пересоберите python3.6, после tk-dev , например:

./configure
make
make install

3
Обновление: Теперь ISpython3.6-tk ! sudo apt install python3.6-tkздесь работает :)
Luis

4

Если вы используете Python 3.6, это работает для меня:

sudo apt-get install python3.6-tk

вместо того

sudo apt-get install python3-tk

Который работает для других версий python3


4
У меня нет пакета python3.6-tk в Ubuntu 16.04.
Брукс

@brooks, то же самое здесь
бесплатный URL

Также не существовало на Centos
Роб Холл

Это должно быть доступно сейчас на Ubuntu 16.04
Ю-Лин Чен

3

Для бедных парней, как я, использующих Python 3.7 . Вам нужен python3.7-tkпакет.

sudo apt install python3.7-tk

$ python
Python 3.7.4 (default, Sep  2 2019, 20:44:09)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'tkinter'
>>> exit()

Заметка. python3-tkустановлен. Но нет python3.7-tk.

$ sudo apt install python3.7-tk
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  tix python3.7-tk-dbg
The following NEW packages will be installed:
  python3.7-tk
0 upgraded, 1 newly installed, 0 to remove and 34 not upgraded.
Need to get 143 kB of archives.
After this operation, 534 kB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu xenial/main amd64 python3.7-tk amd64 3.7.4-1+xenial2 [143
kB]
Fetched 143 kB in 0s (364 kB/s)
Selecting previously unselected package python3.7-tk:amd64.
(Reading database ... 256375 files and directories currently installed.)
Preparing to unpack .../python3.7-tk_3.7.4-1+xenial2_amd64.deb ...
Unpacking python3.7-tk:amd64 (3.7.4-1+xenial2) ...
Setting up python3.7-tk:amd64 (3.7.4-1+xenial2) ...

После его установки все хорошо.

$ python3
Python 3.7.4 (default, Sep  2 2019, 20:44:09)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> exit()

2

На CentOS 6.5 с python 2.7 мне нужно было сделать: yum install python27-tkinter


1
Я получаю сообщение "Нет пакета python27-tkinter доступно".
proutray

2

Иногда (например, в дистрибутиве osgeo4w) tkinter удаляется.

Попробуйте изменить Matplotlib бэкэнд редактирования matplotlibrc файл , расположенный в [python install dir]/matplotlib/mpl-data/matplotlibrcизменении входа бэкэнда параметра из backend: TkAggк чему - то другому , как , backend: Qt4Aggкак описано здесь: http://matplotlib.org/faq/usage_faq.html#what-is-a-backend


1

Поскольку я использую Python 3.7 в Ubuntu, мне пришлось использовать:

sudo apt-get install python3.7-tk

0

Может быть, вы установили Python из источника. В этом случае вы можете перекомпилировать python с поддержкой tcl / tk.

  1. Завершите и установите tcl / tk с http://www.tcl.tk/software/tcltk/download.html , я полагаю, вы установили python на /home/xxx/local/tcl-tk/.
# install tcl
wget -c https://prdownloads.sourceforge.net/tcl/tcl8.6.9-src.tar.gz
tar -xvzf tcl8.6.9-src.tar.gz
cd tcl8.6.9
./configure --prefix=/home/xxx/local/tcl-tk/
make
make install

# install tk
wget -c https://prdownloads.sourceforge.net/tcl/tk8.6.9.1-src.tar.gz
tar -xvzf tk8.6.9.1-src.tar.gz
cd tk8.6.9.1
./configure --prefix=/home/xxx/local/tcl-tk/
make
make install
  1. Перекомпилируйте python с поддержкой tcl / tk, например:
# download the source code of python and decompress it first.

cd <your-python-src-dir>
./configure --prefix=/home/xxx/local/python \
 --with-tcltk-includes=/home/xxx/local/tcl-tk/include \
 --with-tcltk-libs=/home/xxx/local/tcl-tk/lib
make 
make install

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.