С момента обновления с Ubuntu 13.04 до 13.10 IDLE 2.7.5 зависает всякий раз, когда я пытаюсь открыть файл .py. Пустое окно редактора открывается с «простоя» в качестве названия окна. Этот редактор можно использовать для создания новых файлов, но он никогда не отображает содержимое файла, который я пытался открыть, и не будет закрывать каким-либо образом, как я пытался. У меня также есть IDLE (с 3.3.2) в моей системе, и он все еще работает нормально. Что-то пошло не так во время моей первой попытки обновления с Ubuntu 13.04 до 13.10, поэтому я подумал, что это могло быть частью проблемы, но новая установка ОС не устранила проблему.IDLE (Python 2.7.5) больше не открывается .py файлы
ответ
В одном из файлов idlelib есть ошибка. Этот файл должен быть новым или неиспользуемым в предыдущих версиях, потому что это просто проблема с именами.
Перейти к: /usr/lib/python2.7/idlelib/IOBinding.py
Если это не правильный путь, запустите простаивает из командной строки, попытайтесь загрузить файл, и посмотреть на трассировку стека, чтобы увидеть, где находится конечная ошибка.
Перейти к строке 122 и изменить строки 122-128 на следующее:
def coding_spec(lst):
"""Return the encoding declaration according to PEP 263.
Raise LookupError if the encoding is declared but unknown.
"""
# Only consider the first two lines
lst = lst.split("\n", 2)[:2]
(Комментарии не нужны, но сохранить то, что комментарии были). Вы заметите, что все, что вы делаете, это изменение имени переменной 'str' (которое зарезервировано и не должно использоваться в любом случае) до 'lst'.
С Python 2.7.5+ это уже не проблема. Похоже, что они приняли ваше решение, но применили его немного поспешно. Так что переменная, переданная является улица, и ул = str.split («\ п», 2) [: 2] является правильным, но следующая строка, по-прежнему для линии в LST: , а не для line in str: Вот где я получил ошибку и изменил lst на str в следующей строке, исправил проблему. – Sojurn
Отправляя свой комментарий в адрес Thaago, так как форматирование перепуталось в ответе. Он тот, кто действительно решил эту проблему и для контекста, о чем я говорю, сначала прочитал его комментарий.
С Python 2.7.5+ это уже не проблема. Похоже, что они приняли ваше решение, но применили его немного поспешно. Так что переменная, переданная является улица, и
str = str.split("\n", 2)[:2]
является правильным, но следующая строка, по-прежнему
for line in lst:
, а не
for line in str:
Вот где я получил ошибку и меняющийся LST для str в следующей строке исправлена проблема. Это кажется супер неряшливым для меня, и я надеюсь, что они это исправит.
Как найти источник новых ошибок для себя
Кстати, способ, чтобы действительно увидеть, где проблема, чтобы начать «простаивает» таким образом: Открыть терминал типа простоя и нажмите клавишу ВВОД Обычно используйте простоя и делайте то, что вы делали, что воспроизводило проблему. В моем случае просто щелкнуть «Файл» -> «Последние файлы» и открыть мой последний файл.
Когда он завинчивается, ошибка будет в терминале, который вы использовали для открытия простоя.
Возможно, пришло время посмотреть на другие редакторы. IDLE в порядке, но как только вы проведете некоторое время с чем-то лучшим, вам не захочется возвращаться. –
Да, ты, наверное, прав. Думаю, пришло время, когда я двигался дальше и все больше. Любые рекомендации из личного опыта? – Kevin
Что произойдет, если вы откроете простоя из командной строки? $ idle somefile.py ?? Есть ли сообщения об ошибках? –