tkinter на python3.6 с несколькими версиями на arch - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь проверить обнаружение объекта тензорного потока.Поскольку требуется, чтобы 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'

Я посмотрел онлайн и обнаружил, что мне нужноустановить tk с

pacman -S tk

И я все еще получаю ту же ошибку, но когда я перехожу на python3.7.1, он успешно импортируется.Я думаю, что он пытается установить его для python3.7.1, а не python3.6.7.Я знаю, что на Ubuntu люди могут делать

sudo apt-get install python3-tk

Как это будет сделано на арке?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Фактический ответ заключается в том, что тензор потока не требует 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#n37

0 голосов
/ 29 декабря 2018

Обнаружил мою проблему, я создал venv перед установкой tk, поэтому он все еще пропускал ее.Я просто воссоздал виртуальную среду.

...