tkinter на python3.6 с несколькими версиями на arch
Я пытаюсь проверить обнаружение тензорного объекта. Поскольку требуется, чтобы tenorflow был python3.6, а моя система поставлялась с установленным по умолчанию python3.7.1, я собрал python3.6.7 из исходного кода. Затем я создал venv с python3.6.7 и установил все мои зависимости, но в итоге получаю ошибку при попытке импортировать matplotlib и получаю ошибку:
File "detection.py", line 9, in <module>
from matplotlib import pyplot as plt
File "/home/johnmadden/repos/tfobj/lib/python3.6/site-packages/matplotlib/pyplot.py", line 2374, in <module>
switch_backend(rcParams["backend"])
File "/home/johnmadden/repos/tfobj/lib/python3.6/site-packages/matplotlib/pyplot.py", line 207, in switch_backend
backend_mod = importlib.import_module(backend_name)
File "/home/johnmadden/repos/tfobj/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/home/johnmadden/repos/tfobj/lib/python3.6/site-packages/matplotlib/backends/backend_tkagg.py", line 1, in <module>
from . import _backend_tk
File "/home/johnmadden/repos/tfobj/lib/python3.6/site-packages/matplotlib/backends/_backend_tk.py", line 5, in <module>
import tkinter as Tk
File "/usr/local/lib/python3.6/tkinter/__init__.py", line 36, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
Я посмотрел в Интернете и обнаружил, что мне нужно установить тк с
pacman -S tk
И я все еще получаю ту же ошибку, но когда я перехожу на python3.7.1, он успешно импортируется. Я думаю, что он пытается установить его для python3.7.1, а не python3.6.7. Я знаю, что на Ubuntu люди могут делать
sudo apt-get install python3-tk
Как это будет сделано на арке?
2 ответа
Нашел мою проблему, я создал venv перед установкой tk, так что он все еще пропускал ее. Я просто воссоздал виртуальную среду.
Фактический ответ заключается в том, что тензор потока не требует Python 3.6 - Arch Linux предоставляет пакет тензор потока, который был исправлен для сборки под Python 3.7, и вы должны использовать его вместо этого. Если вы создадите свой собственный python и tenorflow, вы рискуете испортить часть или всю установку (в этом случае не удастся правильно настроить tkinter).
Первое, что вы должны всегда делать, это проверять, доступно ли требуемое программное обеспечение в репозиториях дистрибутива - если это так, то пакет определенно предназначен для работы с экосистемой, предоставляемой этими репозиториями дистрибутива.
В этом случае вы можете видеть, что в пакете tenorflow есть несколько исправлений для исправления ошибок сборки на python 3.7: https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/tensorflow&id=ef98a003237250ba0853990da1742ee27c0e554d