Вопрос: Как я могу получить версию ppp/pillow dpkg для работы с python3.5 и python3-tk?python3.5, tkinter и PIL - ImportError: невозможно импортировать имя '_imagingtk'
Проблема: После перезагрузки моей системы после обновления мои коды python3.5 tkinter, которые вызывают методы PIL, больше не работают. Сообщение об ошибке:
Traceback (most recent call last):
File "/home/user1/.local/lib/python3.5/site-packages/PIL/ImageTk.py", line 176, in paste
tk.call("PyImagingPhoto", self.__photo, block.id)
_tkinter.TclError: invalid command name "PyImagingPhoto"
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/user1/Code/tkTreeview_test.py", line 37, in <module>
app = App(root, path=path_to_my_project)
File "/home/user1/Code/tkTreeview_test.py", line 22, in __init__
self.root_pic2 = ImageTk.PhotoImage(root_pic1)
File "/home/user1/.local/lib/python3.5/site-packages/PIL/ImageTk.py", line 115, in __init__
self.paste(image)
File "/home/user1/.local/lib/python3.5/site-packages/PIL/ImageTk.py", line 180, in paste
from PIL import _imagingtk
ImportError: cannot import name '_imagingtk'
После прочтения на подобные вопросы (например 1, 2, 3) и глядя на сообщ ошибки, я думаю, что выше сообщ ошибка связана с проблемой связи между PIL.ImageTk и Tcl в папка .local/lib/python3.5/site-packages/PIL.
Я использовал диспетчер пакетов Synaptic, чтобы очистить python3-pil, python3-pil.imagetk и python3-tk и снова установить их снова. Кроме того, я попытался переустановить tk8.6 и tcl8.6. Тем не менее, те же самые сообщения об ошибках по-прежнему сохраняются каждый раз при запуске кода, открывающего изображения через модуль PIL.ImageTk.
Отдельно, я проверил, что я могу использовать tkinter.PhotoImage (file = i) из python3-tk для открытия файлов изображений. Изображение появилось без каких-либо сообщений об ошибках. Тем не менее, я использую PIL.ImageTk.PhotoImage (i), чтобы открыть тот же файл изображения i, мой код завершился с ошибкой выше.
Установленные DPKG пакеты:
ii libtcl8.6:amd64 8.6.5+dfsg-2 amd64 Tcl (the Tool Command Language) v8.6 - run-time library files
ii tcl 8.6.0+9 amd64 Tool Command Language (default version) - shell
ii tcl8.6 8.6.5+dfsg-2 amd64 Tcl (the Tool Command Language) v8.6 - shell
ii libtk8.6:amd64 8.6.5-1 amd64 Tk toolkit for Tcl and X11 v8.6 - run-time files
ii tk8.6 8.6.5-1 amd64 Tk toolkit for Tcl and X11 v8.6 - windowing shell
ii tk8.6-blt2.5 2.5.3+dfsg-3 amd64 graphics extension library for Tcl/Tk - library
ii python3-tk 3.5.1-1 amd64 Tkinter - Writing Tk applications with Python 3.x
ii python3-pil:amd64 3.1.2-0ubuntu1 amd64 Python Imaging Library (Python3)
ii python3-pil.imagetk:amd64 3.1.2-0ubuntu1 amd64 Python Imaging Library - ImageTk Module (Python3)
ii python3-pilkit 1.1.13+dfsg-1 all Utilities and processors built for, and on top of PIL (Python3 version)
Установленные пип пакеты: Использование списка пип и список PIP3, я нашел pilkit (1.1.13) и подушки (3.2.0), установленный , Это означает, что у меня есть Pillow (3.2.0) через pip и python3-pil: amd64 version 3.1.2-0ubuntu1 через dpkg install в моей системе. Является ли их сосуществование причиной конфликта и, следовательно, моей проблемой?
Я пень этой проблемой и ценю советы по преодолению вышеупомянутой ошибки. Благодаря
попробовать это 'Sudo APT-получить установку питона-изображения-tk' – shivsn
Я использую python3.5 я должен вместо этого использовать Sudo APT-получить установку python3-изображения-ки? В моей системе python по умолчанию использует python2.7. –
@shivsn Примечание, выбрав «python-pil.imagetk» вместо «python-imaging-tk» python-pil.imagetk - это уже самая новая версия (3.1.2-0ubuntu1). 0 для обновления, 0 для новой установки, 0 для удаления и 0 для обновления. Никакого улучшения моей проблемы. –