[英]tkinter on python3.6 with multiple versions on arch
我正在嘗試測試tensorflow對象檢測。 因為tensorflow需要python3.6並且我的系統默認安裝了python3.7.1,所以我從源代碼構建了python3.6.7。 然后,我使用python3.6.7創建了一個venv並安裝了我的所有依賴項,但是當嘗試導入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
如何在拱門上完成?
發現我的問題后,我在安裝tk之前創建了venv,因此它仍然丟失。 我只是重新創建了虛擬環境。
實際的答案是tensorflow不需要python 3.6-Arch Linux提供了一個tensorflow軟件包,該軟件包已打補丁以針對python 3.7構建,您應該改用它。 如果您構建自己的python和tensorflow,則冒着將部分或全部安裝弄亂的風險(在這種情況下,將無法正確設置tkinter)。
您應該始終做的第一件事是檢查所需的軟件是否已在發行版本存儲庫中提供-如果已可用,則該軟件包肯定旨在與那些發行版本存儲庫提供的生態系統一起使用。
在這種情況下,您可以看到tensorflow軟件包具有許多補丁來修復python 3.7上的構建失敗: https ://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages / tensorflow&ID =#ef98a003237250ba0853990da1742ee27c0e554d N37
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.