Comecei a usar o ipython recentemente. Agora, muitas vezes recebo esta mensagem ao fazer qualquer ação, mesmo as simples, como definir variáveis:
Unhandled exception in event loop:
File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\proactor_events.py", line 768, in _loop_self_reading
f.result() # may raise
File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\windows_events.py", line 808, in _poll
value = callback(transferred, key, ov)
File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\windows_events.py", line 457, in finish_recv
raise ConnectionResetError(*exc.args)
Exception [WinError 995] The I/O operation has been aborted because of either a thread exit or an application request
Press ENTER to continue...
Esta mensagem às vezes aparece, às vezes não, para o mesmo comando (como xyz = "hello"). Não faz ideia do que fiz de errado. O intérprete normal não tem esse problema. Usando 3.8 e instalado o ipython 7.10.2 através do cmd.
Obrigado.
Você pode tentar fazer downgrade do kit de ferramentas de prompt para 2.x para ver se esta é a causa?
Eu fiz downgrade para prompt toolkit 2.0.10 e funcionou. Muito obrigado.
Você poderia dizer, como sou completamente novo nisso, o que mudou?
E eu poderia ter problemas por causa da reversão da versão?
O Prompt_toolkit 3 (a biblioteca que permite que o IPython tenha edição de várias linhas e coloração sintática) foi lançado pouco antes do IPython 7.10; ele tenta jogar melhor com asyncio eventloop se você fizer alguma programação simultânea. Fizemos o nosso melhor para tornar o IPython compatível com o prompt toolkit 3, mas há alguns casos extremos que talvez não tenhamos pensado.
Tudo deve funcionar bem com o prompt_toolkit 2.x, e tentaremos descobrir por que você recebeu o erro acima.
Com o seu erro atual, é difícil saber de onde exatamente isso está vindo, mas esperamos que nas próximas versões apuremos o motivo.
Alguma ideia de quando isso vai ser resolvido?
Quando alguém encontra tempo para investigar por que isso acontece e qual é a correção; potencialmente alguém com uma máquina Windows como VM é particularmente lento.
Infelizmente, todos os mantenedores regulares (principalmente eu), estão fazendo isso em seu tempo livre – o que é raro. Eu também não tenho uma máquina Windows.
Se você encontrar alguma pista, de sequências de ações que sempre acionam isso, ajudaria.
Após alguma investigação, acho que é um bug na implementação da plataforma Windows do assíncrono do Python:
Python 3.8.1 (tags/v3.8.1:1b293b6, 18 de dezembro de 2019, 23:11:46) [MSC v.1916 64 bits (AMD64)] no Windows 10 versão 1809 (SO Build 17763.1039)
1) Adicionar ao arquivoBaseProactorEventLoop._loop_self_reading
após a linha 768 o seguinte código:
766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)
2) Teste. não tenho mais erros...
EDIT: você pode simplesmente usar if self._stopping: return
neste contexto de código específico (deve ser um pouco mais rápido)
EDIT2: Bug em bugs.python.org e descrição do que está causando esse erro (encontrado por outra pessoa): https://bugs.python.org/issue39010#msg362076
MrEightFive Obrigado por sua correção .. Parece estar funcionando para mim
@MrEightFive Obrigado, acabei de implementar a mudança. Parece estar funcionando muito bem.
@MrEightFive Parece que também funciona para o Python 3.8.2.
Obrigado @MrEightFive e @Carreau por suas soluções, muito apreciado, eu tive o mesmo problema.
@MrEightFive Parece que também funciona para o Python 3.8.2.
Mesma experiência positiva
Igual, obrigado!
Encontrando isso também. @MrEightFive se você acha que sabe qual é a correção, talvez envie uma solicitação de pull para o CPython? :piscar:
@segevfiner
Não sou membro do grupo de desenvolvimento do CPython e, de acordo com o documento, há um processo (extenso) de verificação antes de deixá-lo entrar. Não vale a pena passar por uma única solicitação de pull, embora eu tenha feito isso se fosse mais fácil.
Segundo, o relatório de bug para isso já existe em bugs.python.org (veja EDIT2 no meu post acima), com um título diferente, mas o motivo desse bug é declarado exatamente como descobri. Então eu acho que não é necessário duplicar.
Terceiro, embora minha solução alternativa funcione, não tenho garantia de que ela não tenha efeitos colaterais (ela tem algumas dependências de como o desligamento do loop de eventos é implementado nessa versão específica do assíncrono e isso pode mudar). Executei os testes assíncronos do CPython (em 3.8.1) e eles passaram, mas nunca investiguei além disso. É melhor se alguém realmente trabalhando em assíncrono e bem versado em código CPython verificar isso.
@MrEightFive É realmente mais simples do que você pensa. Basta enviar um PR e assinar um CLA, depois aguardar a revisão do código etc. Como qualquer outro projeto no GitHub. Embora o CPython muitas vezes não pareça ter pessoas suficientes revisando solicitações de pull, muitos ficam pendurados. Alternativamente, você pode simplesmente postar sua solução sugerida para o problema do rastreador de bugs do Python. Mesmo que você não tenha certeza, você pode simplesmente dizer isso no PR/edição, levantando suas preocupações sobre isso. Isso geralmente ajuda alguém mais familiarizado a analisar o problema e verificar a correção ou oferecer uma melhor/correta. Mas é só uma sugestão, faça só se realmente tiver vontade.
Conectado aqui no rastreador de bugs do Python Issue39010 - ProactorEventLoop gera ConnectionResetError não tratado - msg366002
este erro também foi gerado ao usar o promt_toolkit, mas a solução: MrEightyFive funciona fantástico, economizou muito tempo, obrigado
adicionar código a proactor_events.py (como MrEightFive sugeriu) não ajudou, mas pip install --upgrade prompt-toolkit==2.0.10
ajudou . Win10 Python38.
A solução de KyryloKaralyus funcionou para mim. Uma coisa a notar - primeiro executei acidentalmente (faltando o 0 no final) pip install --upgrade prompt-toolkit==2.0.1 e isso fez com que o erro começasse a ocorrer sem parar. Eu tive que matar o terminal.
adicionar código a proactor_events.py (como MrEightFive sugeriu) não ajudou, mas
pip install --upgrade prompt-toolkit==2.0.10
ajudou . Win10 Python38.
Isso funcionou para mim.
A solicitação de pull foi finalmente proposta para CPython: bpo-39010: Ignore error on cancel future after end of loop.
BTW, é MUITO difícil modificar proactor_events.py
se o python foi instalado na MS Store.
Mudei o proprietário para mim e defini eu e "todos" para controle total. Mas ainda não consigo editar o arquivo, mesmo no modo de segurança e "tentar novamente como administrador".
Eu fiz downgrade para prompt toolkit 2.0.10 e funcionou. Muito obrigado.
pip install prompt-toolkit==2.0.10
Estou recebendo essa exceção com python 3.8.3, ipython 7.13.0, prompt_toolkit 3.0.5
BTW, é MUITO difícil modificar
proactor_events.py
se o python foi instalado na MS Store.
A maneira mais fácil é copiar todo o pacote assíncrono em seu projeto e modificá-lo lá, depois confiar no Python para sombrear todo o módulo. Os aplicativos da Windows Store são _muito_ bem protegidos.
Mas também estou acompanhando o patch do CPython.
Após alguma investigação, acho que é um bug na implementação da plataforma Windows do assíncrono do Python:
Python 3.8.1 (tags/v3.8.1:1b293b6, 18 de dezembro de 2019, 23:11:46) [MSC v.1916 64 bits (AMD64)] no Windows 10 versão 1809 (SO Build 17763.1039)
- Adicionar ao arquivo
Libasyncioproactor_events.py na função BaseProactorEventLoop._loop_self_reading
após a linha 768 o seguinte código:
766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)
- Teste. não tenho mais erros...
EDIT: você pode simplesmente usar
if self._stopping: return
neste contexto de código específico (deve ser um pouco mais rápido)EDIT2: Bug em bugs.python.org e descrição do que está causando esse erro (encontrado por outra pessoa): https://bugs.python.org/issue39010#msg362076
funcionou para mim também!!
THX!!
Eu fiz downgrade para prompt toolkit 2.0.10 e funcionou. Muito obrigado.
pip install prompt-toolkit==2.0.10
Muito obrigado, isso funcionou para mim:
conda instalar prompt_toolkit=2.0.10
Você pode tentar fazer o downgrade do kit de ferramentas do prompt para 2.x para ver se essa é a causa
Isso me ajudou também, obrigado!
pip install --upgrade prompt-toolkit==2.0.10
Muito obrigado, finalmente tenho a solução acima funcionando no meu dispositivo !!
Eu tentei fazer o seguinte, mas sempre recebia [Errno 13] Permissão negada
- Adicionar ao arquivo
Libasyncioproactor_events.py na função BaseProactorEventLoop._loop_self_reading
após a linha 768 o seguinte código:
Isso foi corrigido no 3.9rc2
@imba-tjd Será portado de volta para versões mais antigas do Python? (Ou já foi?)
dos bugs do python, parece que foi retroportado no 3.8.
Estou recebendo o erro mesmo com 3.9rc2...
Você pode tentar fazer downgrade do kit de ferramentas de prompt para 2.x para ver se essa é a causa?
Isso ajudou, obrigado.
Gostaria de saber se isso agora está corrigido no Python 3.8.6 e 3.9.
Após alguma investigação, acho que é um bug na implementação da plataforma Windows do assíncrono do Python:
Python 3.8.1 (tags/v3.8.1:1b293b6, 18 de dezembro de 2019, 23:11:46) [MSC v.1916 64 bits (AMD64)] no Windows 10 versão 1809 (SO Build 17763.1039)
- Adicionar ao arquivo
Libasyncioproactor_events.py na função BaseProactorEventLoop._loop_self_reading
após a linha 768 o seguinte código:
766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)
- Teste. não tenho mais erros...
EDIT: você pode simplesmente usar
if self._stopping: return
neste contexto de código específico (deve ser um pouco mais rápido)EDIT2: Bug em bugs.python.org e descrição do que está causando esse erro (encontrado por outra pessoa): https://bugs.python.org/issue39010#msg362076
Eu tive esse problema com uma instalação limpa do Python 3.8.3 usando o Anaconda no Windows 10 e a solução alternativa do @MrEightFive funcionou perfeitamente para mim!
pip install --upgrade prompt-toolkit==2.0.10
Isso funcionou para mim na versão Windows Anaconda3-2020.11.
Isso (praticamente) funcionou para mim no Windows 10, Anaconda Individual Edition 2020.11 .
Se você é um usuário do Anaconda, você pode querer manter esta atualização no ambiente do conda:
conda install -c conda-forge prompt_toolkit
O que funcionou para mim.
Ele aparece instantaneamente depois que eu executo um try-except-block , em outros casos é imprevisível
Só quero adicionar o texto do erro alemão, para que isso seja encontrado por mais usuários. (Windows 10 Pro, Versão 2004)
Exceção não tratada no loop de eventos:
Arquivo "c:usersuserappdatalocalprogramspythonpython38libasyncioproactor_events.py", linha 768, em _loop_self_reading
f.result() # pode aumentar
Arquivo "c:usersuserappdatalocalprogramspythonpython38libasynciowindows_events.py", linha 808, em _poll
valor = callback(transferido, chave, ov)
Arquivo "c:usersuserappdatalocalprogramspythonpython38libasynciowindows_events.py", linha 457, em finish_recv
aumentar ConnectionResetError(*exc.args)
Exceção [WinError 995] Der E/A-Vorgang wurde wegen eines Threadendes oder einer Anwendungsanforderung abgebrochen
Pressione ENTER para continuar...
Infelizmente
conda install -c conda-forge prompt_toolkit
não resolveu o problema para mim.
@musm , você precisa especificar prompt_toolkit v2.
conda install -c conda-forge prompt_toolkit=2
Estou no Anaconda 2020.11 fazendo
conda install -c conda-forge prompt_toolkit=2
Está levando a grandes conflitos:
> conda install -c conda-forge prompt_toolkit=2
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: \
Found conflicts! Looking for incompatible packages.
This can take several minutes. Press CTRL-C to abort.
Examining qtpy: 1%|▌ | 3/327 [00:00<00:20, 16.00it/s]\Examining statsmodels: 1%|▌ | 3/327 [00:00<00:20, 16.00it/s]/Examining ipython_genutils: 3%|█▌ | 10/327 [00:07<04:17, 1.23it/s]|Examining pyflakes: 5%|██▉ | 16/327 [00:10<02:19, 2.22it/s]|Examining zope.event: 7%|████▏ | 23/327 [00:13<02:18, 2.20it/s]\Examining vs2015_runtime: 11%|██████ | 36/327 [00:17<02:29, 1.94it/s]\Examining mpir: 15%|█████████▌ | 48/327 [01:32<37:15, 8.01s/it]\Examining krb5: 17%|███████████▎ | 57/327 [01:38<06:35, 1.47s/it]-Examining prometheus_client: 18%|█████████▌ | 60/327 [01:42<09:06, 2.05s/it]|Examining cython: 19%|████████████▏ | 63/327 [01:47<08:58, 2.04s/it]-Examining flake8: 21%|█████████████ | 68/327 [02:37<24:45, 5.73s/it]-Examining pytest: 25%|███████████████▊ | 82/327 [03:30<30:07, 7.38s/it]-Examining openpyxl: 26%|███████████████▊ | 85/327 [03:51<25:16, 6.27s/it]\Examining beautifulsoup4: 32%|█████████████████▎ | 105/327 [04:08<03:40, 1.01it/s]|Examining html5lib: 35%|████████████████████▉ | 114/327 [04:11<01:34, 2.25it/s]/Examining console_shortcut: 35%|██████████████████▏ | 114/327 [04:11<01:34, 2.25it/s]-Examining qt: 37%|████████████████████████▌ | 122/327 [04:14<01:09, 2.94it/s]/Examining wheel: 38%|████████████████████████ | 125/327 [04:14<00:54, 3.71it/s]|Examining greenlet: 39%|███████████████████████▍ | 128/327 [04:18<03:24, 1.03s/it]\Examining bokeh: 40%|█████████████████████████ | 130/327 [04:19<02:27, 1.33it/s]|Examining bleach: 40%|████████████████████████▊ | 131/327 [04:37<19:29, 5.97s/it]|Examining entrypoints: 40%|███████████████████████ | 132/327 [04:39<15:25, 4.75s/it]|Examining et_xmlfile: 40%|███████████████████████▍ | 132/327 [04:39<15:25, 4.75s/it]/Examining rtree: 42%|██████████████████████████▏ | 136/327 [04:39<07:31, 2.37s/it]-Examining backcall: 42%|████████████████████████▉ | 136/327 [04:39<07:31, 2.37s/it]\Examining libssh2: 45%|███████████████████████████▌ | 148/327 [04:58<06:13, 2.09s/it]\Examining path: 52%|█████████████████████████████████▍ | 171/327 [05:54<23:54, 9.19s/it]/Examining pywavelets: 53%|██████████████████████████████▌ | 172/327 [05:55<16:51, 6.53s/it]-Examining importlib_metadata: 54%|███████████████████████████▏ | 178/327 [06:06<07:34, 3.05s/it]-Examining prompt_toolkit=2: 55%|████████████████████████████▍ | 179/327 [06:07<07:56, 3.22s/it]-Examining seaborn: 56%|██████████████████████████████████▏ | 183/327 [06:17<06:30, 2.71s/it]\Examining jupyterlab_widgets: 57%|████████████████████████████▎ | 185/327 [06:21<05:57, 2.52s/it]|Examining jdcal: 58%|████████████████████████████████████▍ | 189/327 [06:21<02:55, 1.27s/it]-Examining widgetsnbextension: 59%|█████████████████████████████▌ | 193/327 [06:22<01:18, 1.70it/s]-Examining multipledispatch: 64%|█████████████████████████████████▍ | 210/327 [07:07<03:36, 1.85s/it]-Examining yaml: 68%|███████████████████████████████████████████▍ | 222/327 [07:19<01:11, 1.46it/s]-Examining libxslt: 70%|██████████████████████████████████████████▌ | 228/327 [07:31<03:34, 2.17s/it]\Examining python-jsonrpc-server: 70%|████████████████████████████████▉ | 229/327 [07:31<02:30, 1.54s/it]|Examining typed-ast: 71%|█████████████████████████████████████████▊ | 232/327 [07:32<01:01, 1.54it/s]\Examining @/win-64::__archspec==1=x86_64: 71%|██████████████████████████▉ | 232/327 [07:32<01:01, 1.54it/s]|Examining urllib3: 73%|████████████████████████████████████████████▍ | 238/327 [07:42<03:30, 2.36s/it]/Examining backports: 73%|███████████████████████████████████████████ | 239/327 [07:47<04:20, 2.96s/it]\Examining mccabe: 76%|███████████████████████████████████████████████▏
Oi @musm , essa é uma das desvantagens de usar a distribuição completa do Anaconda. Existem tantos módulos que pode ser difícil resolver todas as suas dependências simultaneamente se você se desviar da distribuição fornecida. Você pode tentar o Miniconda, que é o Conda, mas sem os módulos pré-instalados. Com ele, você cria ambientes para incluir apenas os módulos necessários para o seu projeto.
Eu não tentei isso, mas é possível que você também consiga fazer isso sem precisar desinstalar o Anaconda e instalar o Miniconda. IE Crie um novo ambiente do zero que inclua apenas módulos específicos. Experimente com um comando como o seguinte (edite os nomes dos módulos para incluir o que você realmente precisa).
conda create -n <myenv> python ipython prompt_toolkit=2 jupyter pandas numpy scipy scikit-learn matplotlib
Comentários muito úteis
Após alguma investigação, acho que é um bug na implementação da plataforma Windows do assíncrono do Python:
Python 3.8.1 (tags/v3.8.1:1b293b6, 18 de dezembro de 2019, 23:11:46) [MSC v.1916 64 bits (AMD64)] no Windows 10 versão 1809 (SO Build 17763.1039)
1) Adicionar ao arquivoLibasyncioproactor_events.py na função
BaseProactorEventLoop._loop_self_reading
após a linha 768 o seguinte código:766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)
2) Teste. não tenho mais erros...
EDIT: você pode simplesmente usar
if self._stopping: return
neste contexto de código específico (deve ser um pouco mais rápido)EDIT2: Bug em bugs.python.org e descrição do que está causando esse erro (encontrado por outra pessoa): https://bugs.python.org/issue39010#msg362076