É um 'eu também', sem solução.
... até que eu procurei o erro específico.
Edite o arquivo
/usr/lib/python2.7/idlelib/IOBinding.py
e substitua esta linha na função coding_spec:
str = str.split("\n", 2)[:2]
com:
lst = str.split("\n", 2)[:2]
Estou executando o python 2.7 no Ubuntu 13.10 e o idle (idle-python2.7) parou de funcionar. Sempre que tento abrir um arquivo em uma janela do editor, ele fica em branco, embora o arquivo exista e não esteja vazio / em branco. Além disso, não é possível fechar o tempo ocioso após isso, exceto por meio de um comando terminal kill.
Eu recebo este erro no terminal ao tentar abrir um arquivo em ocioso:
Exception in Tkinter callback
[...lines ommitted for brevity...]
File "/usr/lib/python2.7/idlelib/IOBinding.py", line 129, in coding_spec
for line in lst:
NameError: global name 'lst' is not defined
Se você olhar o código, parece um erro óbvio: de fato lst não está definido na função coding_spec . Além disso, o arquivo de origem IOBinding.py no link é diferente e não mostra o problema.
Pensando que um dos pacotes recentemente tinha sobrescrito o arquivo de alguma forma, eu tentei uma série de coisas, incluindo a reinstalação de todos os pacotes Python do synaptic, mas o IOBinding.py errado ainda está lá. A razão pela qual eu acho que o problema está no próprio pacote é que eu finalmente fiz sudo apt-get remove idle , verifiquei que o diretório idlelib estava vazio e reinstalei com sudo apt-get install idle ; mas o arquivo IOBinding.py errado voltou novamente.
Na verdade, posso voltar a trabalhar de novo simplesmente substituindo lst por str no código, mas para mim isso é claramente um não-não. Não estou feliz em tentar substituir apenas esse arquivo da distribuição python de origem, pois outros arquivos podem estar errados. Eu quero pegar os arquivos certos do pacote oficial.
É um 'eu também', sem solução.
... até que eu procurei o erro específico.
Edite o arquivo
/usr/lib/python2.7/idlelib/IOBinding.py
e substitua esta linha na função coding_spec:
str = str.split("\n", 2)[:2]
com:
lst = str.split("\n", 2)[:2]