метод ввода зависает при импорте майави в Anaconda 3.5.5 - PullRequest
0 голосов
/ 17 мая 2018

У меня есть строка ввода, которая просит пользователя нажать 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()
...