Ipython: erro de travamento

Criado em 20 jan. 2021  ·  4Comentários  ·  Fonte: ipython/ipython

Em [3]: nn.relu
Traceback (última chamada mais recente):
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/terminal/ptutils.py", linha 113, em get_completions
rendimento de self._get_completions(body, offset, cursor_position, self.ipy_completer)
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/terminal/ptutils.py", linha 129, em _get_completions
para c em completações:
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/completer.py", linha 438, em _deduplicate_completions
conclusões = lista(conclusões)
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/completer.py", linha 1818, em completações
para c em self._completions(texto, deslocamento, _timeout=self.jedi_compute_type_timeout/1000):
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/completer.py", linha 1862, em _completions
full_text=full_text, cursor_line=cursor_line, cursor_pos=cursor_column)
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/completer.py", linha 2030, em _complete
cursor_pos, cursor_line, full_text)
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/core/completer.py", linha 1374, em _jedi_matches
text[:offset], namespaces, column=cursor_column, line=cursor_line + 1)
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/jedi/api/__init__.py", linha 726, em __init__
projeto=Projeto(Caminho.cwd()), **kwds)
TypeError: __init__() obteve um argumento de palavra-chave inesperado 'column'

Durante o tratamento da exceção acima, ocorreu outra exceção:

Traceback (última chamada mais recente):
Arquivo "/home/hcl/miniconda3/envs/pytorch/bin/ipython", linha 8, em
sys.exit(start_ipython())
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/__init__.py", linha 126, em start_ipython
return launch_new_instance(argv=argv, *kwargs)Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/traitlets/config/application.py", linha 845, em launch_instanceapp.start()Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/terminal/ipapp.py", linha 356, no inícioself.shell.mainloop()Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/terminal/interactiveshell.py", linha 564, no mainloopself.interact()Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/terminal/interactiveshell.py", linha 547, em interagircódigo = self.prompt_for_code()Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/terminal/interactiveshell.py", linha 475, em prompt_for_code* self._extra_prompt_options())
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/prompt_toolkit/shortcuts/prompt.py", linha 1013, no prompt
return self.app.run(set_exception_handler=set_exception_handler)
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/prompt_toolkit/application/application.py", linha 817, em execução
self.run_async(pre_run=pre_run, set_exception_handler=set_exception_handler)
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/asyncio/base_events.py", linha 584, em run_until_complete
return future.result()
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/prompt_toolkit/application/application.py", linha 783, em run_async
return await _run_async2()
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/prompt_toolkit/application/application.py", linha 771, em _run_async2
aguardar self.cancel_and_wait_for_background_tasks()
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/prompt_toolkit/application/application.py", linha 872, em cancel_and_wait_for_background_tasks
aguardar tarefa
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/prompt_toolkit/buffer.py", linha 1854, em new_coroutine
aguarde corrotina( a, * kw)
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/prompt_toolkit/buffer.py", linha 1684, em async_completer
documento, evento_completo
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/prompt_toolkit/completion/base.py", linha 270, em get_completions_async
documento, evento_completo
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/prompt_toolkit/completion/base.py", linha 196, em get_completions_async
para item em self.get_completions(document, complete_event):
Arquivo "/home/hcl/miniconda3/envs/pytorch/lib/python3.7/site-packages/IPython/terminal/ptutils.py", linha 116, em get_completions
exc_type, exc_value, exc_tb = sys.exc_info()
NameError: nome 'sys' não está definido

Se você suspeitar que este é um bug do IPython 7.19.0, por favor, reporte-o em:
https://github.com/ipython/ipython/issues
ou envie um email para a lista de discussão em [email protected]

Você pode imprimir um traceback mais detalhado agora mesmo com "%tb" ou usar "%debug"
para depurá-lo interativamente.

Tracebacks extra detalhados para fins de relatório de bugs podem ser ativados por meio de:
%config Application.verbose_crash=Verdadeiro

Comentários muito úteis

Lendo o rastreamento:

  1. As importações sys e traceback estão faltando em IPython/terminal/ptutils.py , e este é o problema que causa o travamento do Ipython;
  2. Em jedi/api/__init__.py , ele reclama que o argumento "coluna" é passado para Script.__init__ , que não aceita tal argumento;
  3. Este erro vem de IPython/core/completer.py , onde na linha 1373 um novo jedi.Interpreter é criado, passando um argumento "coluna" para ele, que o sufoca.

A maneira de criar um objeto Script mudou entre jedi 0.17 e jedi 0.18:
Em 0,17:

     def __init__(self, code=None, line=None, column=None, path=None,                                    
                 encoding=None, sys_path=None, environment=None,                                               
                 project=None, source=None):

em 0,18:

    def __init__(self, code=None, *, path=None, environment=None, project=None):

Se você instalar o jedi 0.17 em vez do jedi 0.18, a versão atual do ipython deve funcionar.
Isso funcionou para mim:

pip uninstall jedi
pip install jedi==0.17.2

Todos 4 comentários

A raiz deste problema não é devido ao ipython. Na verdade, vindo do pacote jedi . Mas o ipython também tem um erro relacionado a isso. Módulo sys não importado na exceção get_completions .

Módulos sys e traceback adicionados há 7 meses, mas não atualizados em pypi. Por causa disso, esse erro não está relacionado ao ipython. É erro em jedi .

Você poderia fornecer algumas informações mais detalhadas sobre por que isso é um problema em jedi ?
A versão mais recente do ipython no PyPI é 7.19.0, que contém a importação ausente que é - como você já observou - corrigida no mestre, mas não lançada.
https://github.com/ipython/ipython/blob/7.19.0/IPython/terminal/ptutils.py

Sem importação de sys
https://github.com/ipython/ipython/blob/223e783c447a773a497809646ca0d874ea10ceeb/IPython/terminal/ptutils.py#L20 -L24

Uso de sys
https://github.com/ipython/ipython/blob/223e783c447a773a497809646ca0d874ea10ceeb/IPython/terminal/ptutils.py#L116

Lendo o rastreamento:

  1. As importações sys e traceback estão faltando em IPython/terminal/ptutils.py , e este é o problema que causa o travamento do Ipython;
  2. Em jedi/api/__init__.py , ele reclama que o argumento "coluna" é passado para Script.__init__ , que não aceita tal argumento;
  3. Este erro vem de IPython/core/completer.py , onde na linha 1373 um novo jedi.Interpreter é criado, passando um argumento "coluna" para ele, que o sufoca.

A maneira de criar um objeto Script mudou entre jedi 0.17 e jedi 0.18:
Em 0,17:

     def __init__(self, code=None, line=None, column=None, path=None,                                    
                 encoding=None, sys_path=None, environment=None,                                               
                 project=None, source=None):

em 0,18:

    def __init__(self, code=None, *, path=None, environment=None, project=None):

Se você instalar o jedi 0.17 em vez do jedi 0.18, a versão atual do ipython deve funcionar.
Isso funcionou para mim:

pip uninstall jedi
pip install jedi==0.17.2
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

minrk picture minrk  ·  5Comentários

ederag picture ederag  ·  3Comentários

quchunguang picture quchunguang  ·  3Comentários

frenzymadness picture frenzymadness  ·  3Comentários

hexhexd picture hexhexd  ·  4Comentários