Ipython: Error de socket 99 para el portátil ipython

Creado en 23 jul. 2014  ·  13Comentarios  ·  Fuente: ipython/ipython

Hola
al intentar abrir un portátil, aparece un error de socket 99 "No se puede asignar la dirección solicitada". Esto sucedió después de una actualización del sistema, aunque Ipython se actualizó solo de 2.1.0-62 a 2.1.0-63 (paquete SuSE) Verifiqué lo siguiente sin ningún éxito:

  1. comprobado si el dispositivo de loopback se está ejecutando (es con inet addr: 127.0.0.1 Mask: 255.0.0.0)
  2. comprobado con netstat -lp si el puerto estándar ya está asignado (no lo estaba)
  3. ejecute un pequeño script de prueba para iniciar el servidor web tornado en el puerto 8888, funcionó
  4. Cree un perfil predeterminado y ejecute ipython nuevamente
  5. Se inició ipython con host explícito y puerto (aleatorio) (cuaderno ipython --init --ip = 'localhost' --port = 49151)
  6. Probado es como root
  7. Comprobado que el cortafuegos no está bloqueando
  8. Comprobado que puedo escribir en tmp (en caso de que sea necesario)

Así que no sé qué más puedo hacer. Se agradece cualquier sugerencia sobre qué más puedo hacer.

El mensaje de inicio es
tmp /> cuaderno ipython --init --log-level = 50 --ip = 'localhost' --port = 49151 [15:46:39]
Rastreo (llamadas recientes más última):
Archivo "/ usr / bin / ipython", línea 5, en
start_ipython ()
Archivo "/usr/lib/python2.7/site-packages/IPython/ init .py", línea 120, en start_ipython
devolver launch_new_instance (argv = argv, _kwargs)Archivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", línea 563, en launch_instanceapp.initialize (argv)Expediente "", línea 2, en initializeArchivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", línea 92, en catch_config_errormétodo de retorno (aplicación, * args, * _kwargs)Archivo "/usr/lib/python2.7/site-packages/IPython/terminal/ipapp.py", línea 320, en initializesuper (TerminalIPythonApp, self) .initialize (argv)Expediente "", línea 2, en initializeArchivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", línea 92, en catch_config_errormétodo de retorno (aplicación, _args, * _kwargs)Archivo "/usr/lib/python2.7/site-packages/IPython/core/application.py", línea 381, en initializeself.parse_command_line (argv)Archivo "/usr/lib/python2.7/site-packages/IPython/terminal/ipapp.py", línea 315, en parse_command_linereturn super (TerminalIPythonApp, self) .parse_command_line (argv)Expediente "", línea 2, en parse_command_lineArchivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", línea 92, en catch_config_errormétodo de retorno (aplicación, _args, * _kwargs)Archivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", línea 475, en parse_command_linereturn self.initialize_subcommand (subc, subargv)Expediente "", línea 2, en initialize_subcommandArchivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", línea 92, en catch_config_errormétodo de retorno (aplicación, _args, * _kwargs)Archivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", línea 413, en initialize_subcommandself.subapp.initialize (argv)Expediente "", línea 2, en initializeArchivo "/usr/lib/python2.7/site-packages/IPython/config/application.py", línea 92, en catch_config_errormétodo de retorno (aplicación, _args, * _kwargs)Archivo "/usr/lib/python2.7/site-packages/IPython/html/notebookapp.py", línea 745, en initializeself.init_webapp ()Archivo "/usr/lib/python2.7/site-packages/IPython/html/notebookapp.py", línea 632, en init_webappself.http_server.listen (puerto, self.ip)Archivo "/usr/lib64/python2.7/site-packages/tornado/tcpserver.py", línea 116, en listensockets = bind_sockets (puerto, dirección = dirección)Archivo "/usr/lib64/python2.7/site-packages/tornado/netutil.py", línea 103, en bind_socketssock.bind (sockaddr)Archivo "/usr/lib64/python2.7/socket.py", línea 224, en metanfetaminareturn getattr (self._sock, nombre) ( argumentos)
error: [Errno 99] No se puede asignar la dirección solicitada

La configuración de mi sistema es
{'commit_hash': '681fd77',
'commit_source': 'instalación',
'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 (predeterminado, 21 de noviembre de 2013, 15:55:38) [GCC]'}

Mi versión de tornado es
Nombre: python-tornado / Versión: 3.2.1-2.1 / Arco: x86_64

Comentario más útil

¿Y si prueba --ip=127.0.0.1 ?

Todos 13 comentarios

¿Y si prueba --ip=127.0.0.1 ?

Hola

Eso funciona (debería haber pensado en eso). Lo puse en mi ipython_notebook_config.py. Me pregunto por qué cambió el comportamiento ...
Entonces por mi parte podría cerrar este tema. Solo si uno pudiera cambiar el mensaje de error a algo significativo que apunte a la solución, mantendría este problema abierto. Pero tal vez este problema sea demasiado específico ...

¡Muchas gracias por la rápida respuesta!

Copiando explicación de # 6191:

IPython escucha en localhost de forma predeterminada. 127.0.0.1 debería comportarse igual, y lo hace en casi todos los casos. Algunos casos en los que esto se puede manejar de manera diferente incluyen proxies locales y / o firewalls (generalmente debido a un descuido de la configuración, en lugar de una diferencia intencional en el comportamiento). Hemos encontrado casos en los que localhost funciona y 127 no y viceversa, por lo que no hay una respuesta inequívocamente correcta para el valor predeterminado.

¿Tiene una configuración de servidor de seguridad y / o proxy? Si es así, ¿controlas su configuración? Describiría este comportamiento como un error en la configuración de su red, pero es posible que no tenga permiso para corregirlo.

Gracias, especificar 127.0.0.1 también resolvió el error de socket para mí

Si lo usa en un servidor en la nube, puede usar --ip=0.0.0.0 .

Gracias por mantener este problema, estoy configurando un servidor portátil en un servidor en la nube. Y especificar la ip de escucha como "0.0.0.0" resolvió este mismo problema.

Gracias, tuve el mismo problema :)

gracias lo resolvió!

Para las personas que provienen de los resultados de búsqueda: revise su /etc/hosts para ver si hay errores tipográficos y la configuración de ipv6. localhost solo debe apuntar a ipv4 loopback ( 127.0.0.1 ), no a ipv6 ( ::1 ). Esto puede romper otras cosas, no solo jupyter.

Por ejemplo, esto está mal:
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
esto esta bien:
::1 localhost6 localhost6.localdomain6

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

@mlazowik ¡ Muchas gracias! Esto resolvió mi problema: me pregunto cuántos otros tienen el mismo problema pero han optado por la solución 127.0.0.1. Esta es la solución correcta (asegurándose de que la tabla de búsqueda de nombres de host sea correcta). En mi caso (Arch Linux), mi /etc/hosts se "envió" de la siguiente manera:

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

Y lo corrigí a lo siguiente:

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

Si lo usa en un servidor en la nube, puede usar --ip=0.0.0.0 .

Para mí (en mac) solo el --ip = 0.0.0.0 funciona en la ventana acoplable en ejecución local.

En mi caso, se debe a que / etc / hosts tiene una dirección de loopback :: 1 duplicada en IPv6.
Después de comentar la segunda dirección de loopback :: 1, el error desaparece.

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

@mlazowik Tuve el mismo problema con la misma solución eventual, pero me pareció interesante que man /etc/hosts tenga esto en su ejemplo, lo que me impidió resolver mi problema (ya que una presunta autoridad recomienda exactamente lo que estás diciendo es 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

Dejé caer el localhost de la entrada ::1 (manteniendo los otros dos) y todo está bien. También asumí que ip6 era una palabra clave ipv6 , pero quizás ip6-foo y foo6 están bien (por ejemplo, solo alguna forma de alteración de nombres frente a ipv4 equivalente)?

¿Fue útil esta página
0 / 5 - 0 calificaciones