Сценарий с импортированными 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-процесс при вызове как скрипт.
Похоже, проблема возникает, когда pyperclip
загружается при открытии tkFileDialog
, поскольку следующий фрагмент работает как ожидал:
import Tkinter, tkFileDialog
root = Tkinter.Tk()
root.withdraw()
file_path = tkFileDialog.askopenfilename()
root.destroy()
import pyperclip
raise SystemExit
В любом случае, однако, каждая строка кода после критической части выполняется, как и ожидалось, повышение SystemExit
создаст мягкую блокировку.
Это нельзя использовать в качестве обходного пути, поскольку python не позволяет выгрузку модули.
Что я делаю не так? Любые идеи для обходного пути?