Ipython: Erro de soquete 99 para notebook ipython

Criado em 23 jul. 2014  ·  13Comentários  ·  Fonte: ipython/ipython

Oi
ao tentar abrir um notebook, recebo um erro de soquete 99 "Não é possível atribuir o endereço solicitado". Isso aconteceu após uma atualização do sistema, embora o Ipython tenha sido atualizado apenas de 2.1.0-62 para 2.1.0-63 (pacote SuSE) Eu verifiquei o seguinte sem qualquer sucesso:

  1. verificado se o dispositivo de loopback está em execução (é com inet addr: 127.0.0.1 Máscara: 255.0.0.0)
  2. verificado com netstat -lp se a porta padrão já estiver atribuída (não foi)
  3. execute um pequeno script de teste para iniciar o servidor da web tornado na porta 8888, funcionou
  4. Crie um perfil padrão e execute ipython novamente
  5. Ipython iniciado com host explícito e porta (aleatória) (ipython notebook --init --ip = 'localhost' --port = 49151)
  6. Tentou é como root
  7. Verificado se o firewall não está bloqueando
  8. Verifiquei se consigo escrever em tmp (caso seja necessário)

Portanto, não sei o que mais posso fazer. Qualquer indicação sobre o que mais posso fazer é bem-vinda.

A mensagem de inicialização é
tmp /> notebook ipython --init --log-level = 50 --ip = 'localhost' --port = 49151 [15:46:39]
Traceback (última chamada mais recente):
Arquivo "/ usr / bin / ipython", linha 5, em
start_ipython ()
Arquivo "/usr/lib/python2.7/site-packages/IPython/ init .py", linha 120, em start_ipython
retornar launch_new_instance (argv = argv, _kwargs)Arquivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", linha 563, em launch_instanceapp.initialize (argv)Arquivo "", linha 2, na inicializaçãoArquivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", linha 92, em catch_config_errormétodo de retorno (app, * args, * _kwargs)Arquivo "/usr/lib/python2.7/site-packages/IPython/terminal/ipapp.py", linha 320, na inicializaçãosuper (TerminalIPythonApp, self) .initialize (argv)Arquivo "", linha 2, na inicializaçãoArquivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", linha 92, em catch_config_errormétodo de retorno (app, _args, * _kwargs)Arquivo "/usr/lib/python2.7/site-packages/IPython/core/application.py", linha 381, na inicializaçãoself.parse_command_line (argv)Arquivo "/usr/lib/python2.7/site-packages/IPython/terminal/ipapp.py", linha 315, em parse_command_linereturn super (TerminalIPythonApp, self) .parse_command_line (argv)Arquivo "", linha 2, em parse_command_lineArquivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", linha 92, em catch_config_errormétodo de retorno (app, _args, * _kwargs)Arquivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", linha 475, em parse_command_linereturn self.initialize_subcommand (subc, subargv)Arquivo "", linha 2, em initialize_subcommandArquivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", linha 92, em catch_config_errormétodo de retorno (app, _args, * _kwargs)Arquivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", linha 413, em initialize_subcommandself.subapp.initialize (argv)Arquivo "", linha 2, na inicializaçãoArquivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", linha 92, em catch_config_errormétodo de retorno (app, _args, * _kwargs)Arquivo "/usr/lib/python2.7/site-packages/IPython/html/notebookapp.py", linha 745, na inicializaçãoself.init_webapp ()Arquivo "/usr/lib/python2.7/site-packages/IPython/html/notebookapp.py", linha 632, em init_webappself.http_server.listen (porta, self.ip)Arquivo "/usr/lib64/python2.7/site-packages/tornado/tcpserver.py", linha 116, em escutasockets = bind_sockets (porta, endereço = endereço)Arquivo "/usr/lib64/python2.7/site-packages/tornado/netutil.py", linha 103, em bind_socketssock.bind (sockaddr)Arquivo "/usr/lib64/python2.7/socket.py", linha 224, em metanfetaminareturn getattr (self._sock, name) ( args)
erro: [Errno 99] Não é possível atribuir o endereço solicitado

Minha configuração de sistema é
{'commit_hash': '681fd77',
'commit_source': 'instalação',
'default_encoding': 'UTF-8',
'ipython_path': '/usr/lib/python2.7/site-packages/IPython',
'ipython_version': '2.1.0',
'os_name': 'posix',
'plataforma': 'Linux-3.11.10-17-default-x86_64-with-SuSE-13.1-x86_64',
'sys_executable': '/ usr / bin / python',
'sys_platform': 'linux2',
'sys_version': '2.7.6 (padrão, 21 de novembro de 2013, 15:55:38) [GCC]'}

Minha versão do tornado é
Nome: python-tornado / Versão: 3.2.1-2.1 / Arch: x86_64

Comentários muito úteis

E se você tentar --ip=127.0.0.1 ?

Todos 13 comentários

E se você tentar --ip=127.0.0.1 ?

Oi

Isso funciona (deveria ter pensado nisso). Eu coloquei em meu ipython_notebook_config.py. Eu me pergunto por que o comportamento mudou ...
Então, do meu lado, eu poderia encerrar esse problema. Somente se alguém pudesse alterar a mensagem de erro para algo significativo que apontasse para a solução, eu manteria esse problema aberto. Mas talvez este problema seja muito específico ...

Muito obrigado pela resposta rápida!

Copiando a explicação de # 6191:

O IPython escuta no localhost por padrão. O 127.0.0.1 deve se comportar da mesma forma, e o faz em quase todos os casos. Alguns casos em que isso pode ser tratado de forma diferente incluem proxies locais e / ou firewalls (geralmente devido a um descuido na configuração, em vez de uma diferença intencional no comportamento). Encontramos casos em que localhost funciona e 127 não e vice-versa, portanto, não há uma resposta inequivocamente correta para o padrão.

Você tem um firewall e / ou configuração de proxy? Em caso afirmativo, você controla sua configuração? Eu descreveria esse comportamento como um bug na configuração da sua rede, mas pode não ser um que você tenha permissão para corrigir.

Obrigado, especificar 127.0.0.1 também resolveu o erro de soquete para mim

Se você usar em um servidor de nuvem, você pode usar --ip=0.0.0.0 .

Obrigado por manter este problema, estou configurando um servidor de notebook em um servidor em nuvem. E especificar o ip de escuta como "0.0.0.0" resolve o mesmo problema.

Obrigado, tive o mesmo problema :)

obrigado, resolveu!

Para pessoas provenientes dos resultados de pesquisa: verifique seu /etc/hosts para erros de digitação e configuração de ipv6. localhost deve apontar apenas para ipv4 loopback ( 127.0.0.1 ), não para ipv6 ( ::1 ). Isso pode quebrar outras coisas, não apenas o Jupyter.

Por exemplo, isso está errado:
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
isso é ok:
::1 localhost6 localhost6.localdomain6

https://github.com/codenvy/codenvy/issues/2427#issuecomment -397347888
https://bugzilla.redhat.com/show_bug.cgi?id=211800#c4

@mlazowik Muito obrigado! Isso resolveu meu problema - eu me pergunto quantas outras pessoas têm o mesmo problema, mas optaram pela solução 127.0.0.1. Esta é a solução correta (garantindo que a tabela de pesquisa de nome de host esteja correta). Na minha instância (Arch Linux), meu /etc/hosts foi "enviado" da seguinte forma:

127.0.0.1       localhost.localdomain    localhost
::1             localhost.localdomain    localhost

E eu corrigi o seguinte:

127.0.0.1       localhost.localdomain    localhost
::1             localhost6.localdomain6  localhost6

Se você usar em um servidor de nuvem, você pode usar --ip=0.0.0.0 .

Para mim (no mac), apenas --ip = 0.0.0.0 funciona no docker em execução local.

No meu caso, é devido ao / etc / hosts para endereço de loopback duplicado :: 1 no IPv6.
Depois de comentar o segundo endereço de loopback :: 1, o erro desapareceu.

Screenshot from 2019-12-14 16-32-13

@mlazowik Tive o mesmo problema com a mesma solução eventual, mas achei interessante que man /etc/hosts tenha isso em seu exemplo, o que me impediu de descobrir meu problema (como uma autoridade presumida recomenda exatamente o que você está dizendo é problemático):

# The following lines are desirable for IPv4 capable hosts
127.0.0.1       localhost
127.0.1.1       thishost.mydomain.org  thishost

[...]

# The following lines are desirable for IPv6 capable hosts
::1             localhost ip6-localhost ip6-loopback

Eu tirei localhost da entrada ::1 (mantendo as outras duas) e está tudo bem. Eu também presumi que ip6 era uma palavra-chave ipv6 , mas talvez ip6-foo e foo6 sejam ambos bons (por exemplo, apenas alguma forma de mutilação de nome contra ipv4 equivalente)?

Esta página foi útil?
0 / 5 - 0 avaliações