Pacote incorreto para Idle-python2.7?

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.

  • O ocioso estava funcionando bem antes. O problema apareceu depois que instalei uma série de coisas, incluindo o idlex, vários módulos e mpmath, mas depois de tentar consertá-lo de várias maneiras, parece ser causado pelo pacote oficial do Ubuntu.

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.

    
por adelval 09.11.2013 / 09:40

1 resposta

0

É 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]

link

    
por user233454 09.01.2014 / 05:04