tkFileDialog 和 pyperclip 防止脚本退出
tkFileDialog and pyperclip prevent script from exiting
同时导入了 tkFileDialog 和 pyperclip 的脚本不会退出。 (Python2.7)
工作示例,我的脚本按预期退出:
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
以及:
import pyperclip
print ('whatever')
然而,以下将阻止我的脚本退出(raise SystemExit
为强调而添加):
import Tkinter, tkFileDialog
import pyperclip
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
raise SystemExit
只需导入两个模块即可正常工作,必须打开 tkFileDialog 才能产生错误。
当作为脚本调用时,调用 os._exit()
或任何引发 SystemExit
的代码会软锁定解释器或 python 进程。
看来,问题发生在打开 tkFileDialog
时加载 pyperclip
时,因为以下片段按预期工作:
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
import pyperclip
raise SystemExit
尽管如此,在任何情况下,关键部分之后的每一行代码都会按预期执行,但提高 SystemExit
将创建一个软锁。
这不能用作解决方法,因为 python 不允许卸载模块。
我做错了什么?有什么解决方法吗?
不是真正的解决方案,但我能想到的最好的解决方案:
从 python 2.7 切换到 python 3.7(因此从 Tkinter 8.5 切换到 8.6)对我有用。
当然,这还有很多其他含义,我无法测试。
旁注 - 因为其他人无法复制这个问题:
我有机会在另一台 Windows 10 机上 运行 我的代码片段 - 它在相同的设置下完美运行。所以这个问题肯定和底层系统有关,而不是pyperclip或Tkinter本身。
同时导入了 tkFileDialog 和 pyperclip 的脚本不会退出。 (Python2.7) 工作示例,我的脚本按预期退出:
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
以及:
import pyperclip
print ('whatever')
然而,以下将阻止我的脚本退出(raise SystemExit
为强调而添加):
import Tkinter, tkFileDialog
import pyperclip
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
raise SystemExit
只需导入两个模块即可正常工作,必须打开 tkFileDialog 才能产生错误。
当作为脚本调用时,调用 os._exit()
或任何引发 SystemExit
的代码会软锁定解释器或 python 进程。
看来,问题发生在打开 tkFileDialog
时加载 pyperclip
时,因为以下片段按预期工作:
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
import pyperclip
raise SystemExit
尽管如此,在任何情况下,关键部分之后的每一行代码都会按预期执行,但提高 SystemExit
将创建一个软锁。
这不能用作解决方法,因为 python 不允许卸载模块。
我做错了什么?有什么解决方法吗?
不是真正的解决方案,但我能想到的最好的解决方案: 从 python 2.7 切换到 python 3.7(因此从 Tkinter 8.5 切换到 8.6)对我有用。
当然,这还有很多其他含义,我无法测试。
旁注 - 因为其他人无法复制这个问题: 我有机会在另一台 Windows 10 机上 运行 我的代码片段 - 它在相同的设置下完美运行。所以这个问题肯定和底层系统有关,而不是pyperclip或Tkinter本身。