同时导入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的代码都会对解释器或process进行软锁。
似乎在打开pyperclip时加载tkFileDialog时会出现问题,因为下面的片段按预期工作:
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
import pyperclip
raise SystemExit不过,无论如何,关键部分执行后的每一行代码都会按预期执行,但引发SystemExit将创建一个软锁。
但这不能作为一种解决办法,因为python不允许卸载模块。
我做错了什么?有什么解决办法吗?
发布于 2018-12-02 05:37:27
不是一个真正的解决方案,但我能想到的最好的解决方案是:从python2.7切换到python3.7(因此从Tkinter8.5切换到8.6)。
当然,这还有很多其他的含义,我无法检验。
因为其他人无法复制这个问题:我有机会在另一台Windows 10机器上运行我的代码片段--它在相同的设置下运行得完美无缺。因此,这个问题肯定与底层系统有关,而不是pyperclip或Tkinter本身。
https://stackoverflow.com/questions/53145399
复制相似问题