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

Другие вопросы по тегам