У меня есть строка ввода, которая просит пользователя нажать Enter, чтобы продолжить.Это сделано для того, чтобы у них было время прочитать некоторые вещи в конце программы, прежде чем она выйдет (когда я создаю исполняемый файл).
Недавно я перешел из пользовательской среды Python 3.6 к использованию Anaconda для Python 3.5.5, и теперь код будет зависать после оператора ввода, если пользователь нажимает клавишу ввода без фактического ввода символа.
Мой скрипт импортирует mayavi
, и когда я удаляю эту строку импорта, проблема исчезает.Мне действительно нравится использовать Mayavi, и я потратил 3 дня на то, чтобы все правильно заморозить, поэтому я предпочел бы продолжать его использовать.
Пример:
junk = input('Please press enter!')
Если пользователь нажимает ввод, программапросто виснет.Тем не менее, если вы введете, а затем нажмите Enter, он будет работать, как и ожидалось.Как я могу заставить его продолжать без ввода каких-либо символов и просто нажать Enter?
РЕДАКТИРОВАТЬ
Для получения более подробной информации, я запускаю это в коде Visual Studio на Windows, используясреда Anaconda Python 3.5.5.Неважно, где в коде я запускаю его.Я думал, что это произошло несмотря ни на что, но я начал лишать импорт, и он снова начал работать.Я импортирую пользовательский класс, tkinter, xlwings, numpy, traceback, mayavi.mlab, sys, time, win32api.GetSystemMetrics и win32com.client.gencache.Я продолжу изучать, является ли это конкретным импортом.
Кроме того, все это выполняется в функции-обертке, поэтому я не знаю, имеет ли это значение.Кроме того, я слышал о проблемах с перехватом любого исключения, но это работает так, как я хочу.
def main_wrapper():
# wrapper for main program to catch any exceptions and display them to the user
try:
main()
except Exception as ex:
print('Unexpected exception occurred...')
traceback.print_exc()
if __name__ == '__main__':
main_wrapper()