2013-11-26 4 views
1

С момента обновления с 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 файлы

+1

Возможно, пришло время посмотреть на другие редакторы. IDLE в порядке, но как только вы проведете некоторое время с чем-то лучшим, вам не захочется возвращаться. –

+0

Да, ты, наверное, прав. Думаю, пришло время, когда я двигался дальше и все больше. Любые рекомендации из личного опыта? – Kevin

+0

Что произойдет, если вы откроете простоя из командной строки? $ idle somefile.py ?? Есть ли сообщения об ошибках? –

ответ

3

В одном из файлов 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'.

+0

С Python 2.7.5+ это уже не проблема. Похоже, что они приняли ваше решение, но применили его немного поспешно. Так что переменная, переданная является улица, и ул = str.split («\ п», 2) [: 2] является правильным, но следующая строка, по-прежнему для линии в LST: , а не для line in str: Вот где я получил ошибку и изменил lst на str в следующей строке, исправил проблему. – Sojurn

1

Отправляя свой комментарий в адрес Thaago, так как форматирование перепуталось в ответе. Он тот, кто действительно решил эту проблему и для контекста, о чем я говорю, сначала прочитал его комментарий.

С Python 2.7.5+ это уже не проблема. Похоже, что они приняли ваше решение, но применили его немного поспешно. Так что переменная, переданная является улица, и

str = str.split("\n", 2)[:2] 

является правильным, но следующая строка, по-прежнему

for line in lst: 

, а не

for line in str: 

Вот где я получил ошибку и меняющийся LST для str в следующей строке исправлена ​​проблема. Это кажется супер неряшливым для меня, и я надеюсь, что они это исправит.

Как найти источник новых ошибок для себя

Кстати, способ, чтобы действительно увидеть, где проблема, чтобы начать «простаивает» таким образом: Открыть терминал типа простоя и нажмите клавишу ВВОД Обычно используйте простоя и делайте то, что вы делали, что воспроизводило проблему. В моем случае просто щелкнуть «Файл» -> «Последние файлы» и открыть мой последний файл.

Когда он завинчивается, ошибка будет в терминале, который вы использовали для открытия простоя.

Смежные вопросы