我安装了python3.9
sudo apt install python3.9
然后闲置
sudo apt install idle-python3.9
当我尝试运行idle-python3.9时,我得到以下回溯:
Traceback (most recent call last):
File "/usr/bin/idle-python3.9", line 3, in <module>
from idlelib.pyshell import main
File "/usr/lib/python3.9/idlelib/pyshell.py", line 53, in <module>
from idlelib.editor import EditorWindow, fixwordbreaks
File "/usr/lib/python3.9/idlelib/editor.py", line 19, in <module>
from idlelib import configdialog
File "/usr/lib/python3.9/idlelib/configdialog.py", line 26, in <module>
from idlelib.config_key import GetKeysDialog
File "/usr/lib/python3.9/idlelib/config_key.py", line 7, in <module>
from tkinter.simpledialog import _setup_dialog
ImportError: cannot import name '_setup_dialog' from 'tkinter.simpledialog'
(/usr/lib/python3.9/tkinter/simpledialog.py)
果然tkinter.simpledialog中没有这个方法。四处寻找,我发现以下 python 文件正在尝试进行导入:
/usr/lib/python3.9/idlelib/config_key.py
/usr/lib/python3.9/idlelib/searchbase.py
/usr/lib/python3.9/idlelib/query.py
为什么当我相信idlelib文件和idle-python3.9是相同版本且安装在一起时它们之间不匹配。我该如何解决?我是新手...提前致谢。
最佳答案
您拥有的 IDLE 3.9.5 版本(它调用 3.9.5 中添加到 tkinter.simpledialog 的函数)与您必须拥有的旧版本 tkinter 之间不匹配。您必须安装 thinkter-python3.9 之类的东西才能获取更新的 tkinter。或者也许 Mint 的人忽略了将 3.9.5 版本的 tkinter 与 3.9.5 python 一起包含在内。
IDLE 和 tkinter 确实不应该单独安装,或者如果是的话,IDLE 安装程序应该检查 tkinter 版本。请告知 Mint 人员有关此错误的信息。我希望它也不会感染 Ubuntu。 (Windows 和 Mac 的 python.org 安装程序安装或不安装 tkinter 和 IDLE,这样就不会出现不匹配的问题。)
无论如何,新功能是
def _setup_dialog(w):
if w._windowingsystem == "aqua":
w.tk.call("::tk::unsupported::MacWindowStyle", "style",
w, "moveableModal", "")
elif w._windowingsystem == "x11":
w.wm_attributes("-type", "dialog")
在第 259 行添加。该函数和对该函数的多次调用由 https://github.com/python/cpython/commit/9a165399aec930f27639dd173426ccc33586662b 对于 https://bugs.python.org/issue43655和 https://github.com/python/cpython/pull/25588 .
PS:'idle-python3.9是一个安装名称,而不是您运行的名称。一种运行 python.exe 或 python3.exe,具体取决于系统,或者一种使用 python(3).exe 运行 IDLE。
关于python - 尝试运行idle-python3.9(Linux Mint 20)时,tkinter.simpledialog 中缺少 _setup_dialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67511353/