Скрипт с импортированными 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 не позволяет выгружать модули.
Что я делаю не так? Есть идеи для обхода?