ImportError: Нет модуля с именем _tkinter, пожалуйста, установите пакет python3-tk - PullRequest
0 голосов
/ 14 мая 2018

Я уже рассмотрел все подобные вопросы в этом отношении и попробовал предложенные там решения. Но я не могу разобраться с этой ошибкой, хотя мой пакет python3-tk установлен в правильном virtualenv, который я использую для своего проекта.

Хотя в моем проекте я не использую tkinter, при попытке запустить файл я получаю следующую ошибку, связанную с модулем _tkinter.

Traceback (последний последний вызов):
Файл "/usr/lib/python3.5/tkinter/init.py", строка 36, в импорт _tkinter
Ошибка импорта: нет модуля с именем _tkinter

Во время обработки вышеуказанного исключения произошло другое исключение:

Traceback (последний последний вызов):
Файл "/home/manuelanayantarajeyaraj/PycharmProjects/ChatbotWord2Vec/main.py", строка 2, в из matplotlib import pyplot as plt
Файл "/home/manuelanayantarajeyaraj/usr/myProject/my_project/lib/python3.5/site-packages/matplotlib/pyplot.py", строка 115, в _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup ()
Файл "/home/manuelanayantarajeyaraj/usr/myProject/my_project/lib/python3.5/site-packages/matplotlib/backends/init.py", строка 62, в pylab_setup [backend_name], 0)
Файл "/home/manuelanayantarajeyaraj/usr/myProject/my_project/lib/python3.5/site-packages/matplotlib/backends/backend_tkagg.py", строка 4, в от . import tkagg # Нарисуйте изображение в расширение Tk Photo Blitter.
Файл "/home/manuelanayantarajeyaraj/usr/myProject/my_project/lib/python3.5/site-packages/matplotlib/backends/tkagg.py", строка 5, в из шести копий импорта ткинтер как тк
Файл "/home/manuelanayantarajeyaraj/usr/myProject/my_project/lib/python3.5/site-packages/six.py", строка 92, в получить result = self._resolve ()
Файл "/home/manuelanayantarajeyaraj/usr/myProject/my_project/lib/python3.5/site-packages/six.py", строка 115, в _resolve return _import_module (self.mod)
Файл "/home/manuelanayantarajeyaraj/usr/myProject/my_project/lib/python3.5/site-packages/six.py", строка 82, в _import_module импорт (имя)
Файл "/usr/lib/python3.5/tkinter/init.py", строка 38, в поднять ImportError (str (msg) + ', пожалуйста, установите пакет python3-tk')
ImportError: Нет модуля с именем _tkinter, пожалуйста, установите пакет python3-tk

Следовательно, я перешел к месту нахождения моего переводчика, создал virtualenv и установил пакет python3-tk, используя следующую команду

sudo apt-get install python3-tk

Когда я проверял, все пакеты, кажется, обновлены

Reading package lists... Done
Building dependency tree       
Reading state information... Done
python3-tk is already the newest version (3.6.5-3~16.04.york0.2).
The following packages were automatically installed and are no longer required:
  libappindicator1 libindicator7 libllvm4.0 linux-headers-4.10.0-28
  linux-headers-4.10.0-28-generic linux-headers-4.13.0-36
  linux-headers-4.13.0-36-generic linux-headers-4.13.0-37
  linux-headers-4.13.0-37-generic linux-image-4.10.0-28-generic
  linux-image-4.13.0-36-generic linux-image-4.13.0-37-generic
  linux-image-extra-4.10.0-28-generic linux-image-extra-4.13.0-36-generic
  linux-image-extra-4.13.0-37-generic linux-signed-image-4.10.0-28-generic
  linux-signed-image-4.13.0-36-generic linux-signed-image-4.13.0-37-generic
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 37 not upgraded.

Но я все еще получаю ту же ошибку импорта ImportError: No module named '_tkinter', please install the python3-tk package.

Любые предложения на этот счет будут высоко оценены.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Сообщение указывает, что когда вы запускаете sudo apt-get install python3-tk, оно говорит вам, что tkinter sintalled для Python3.6.5 , но с другой стороны, ImportError относится к Python3.5 . Поэтому я считаю, что это должно решить вашу проблему:

sudo apt-get install python3.5-tk
0 голосов
/ 14 мая 2018

Когда вы импортируете matplotlib, он, вероятно, будет пытаться использовать бэкэнд tk по умолчанию.Если вы не установили tk или не хотите использовать его где-либо еще в своем проекте, то возможным решением будет просто использовать другой бэкэнд:

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