Ipython: ipython 笔记本的套接字错误 99

创建于 2014-07-23  ·  13评论  ·  资料来源: ipython/ipython

你好
尝试打开笔记本时,出现套接字错误 99“无法分配请求的地址”。 这是在系统更新后发生的,虽然 Ipython 仅从 2.1.0-62 更新到 2.1.0-63(SuSE 包),但我检查了以下内容但没有任何成功:

  1. 检查环回设备是否正在运行(使用 inet addr:127.0.0.1 Mask:255.0.0.0)
  2. 如果已经分配了标准端口,则使用 netstat -lp 检查(不是)
  3. 运行一个小的测试脚本来在端口 8888 启动 Tornado Web 服务器,它工作正常
  4. 创建默认配置文件并再次运行 ipython
  5. 使用显式主机和(随机)端口启动 ipython(ipython notebook --init --ip='localhost' --port=49151)
  6. 尝试是作为根
  7. 检查防火墙没有阻止
  8. 检查我是否能够写入 tmp(以防万一)

所以我不知道我还能做什么。 任何关于我还能做什么的指针表示赞赏。

启动消息是
tmp/> ipython notebook --init --log-level=50 --ip='localhost' --port=49151 [15:46:39]
回溯(最近一次调用最后一次):
文件“/usr/bin/ipython”,第 5 行,在
start_ipython()
文件“/usr/lib/python2.7/site-packages/IPython/初始化的.py”,线120,在start_ipython
返回launch_new_instance(argv=argv, _kwargs)文件“/usr/lib/python2.7/site-packages/IPython/config/application.py”,第563行,在launch_instanceapp.initialize(argv)文件 ”",第 2 行,在初始化中文件“/usr/lib/python2.7/site-packages/IPython/config/application.py”,第 92 行,在 catch_config_error返回方法(应用程序,*args,*_kwargs)文件“/usr/lib/python2.7/site-packages/IPython/terminal/ipapp.py”,第320行,初始化超级(TerminalIPythonApp,self)。初始化(argv)文件 ”",第 2 行,在初始化中文件“/usr/lib/python2.7/site-packages/IPython/config/application.py”,第 92 行,在 catch_config_error返回方法(应用程序,_args,*_kwargs)文件“/usr/lib/python2.7/site-packages/IPython/core/application.py”,第381行,初始化self.parse_command_line(argv)文件“/usr/lib/python2.7/site-packages/IPython/terminal/ipapp.py”,第 315 行,在 parse_command_linereturn super(TerminalIPythonApp, self).parse_command_line(argv)文件 ”",第 2 行,在 parse_command_line 中文件“/usr/lib/python2.7/site-packages/IPython/config/application.py”,第 92 行,在 catch_config_error返回方法(应用程序,_args,*_kwargs)文件“/usr/lib/python2.7/site-packages/IPython/config/application.py”,第 475 行,在 parse_command_line返回 self.initialize_subcommand(subc, subargv)文件 ”",第 2 行,在 initialize_subcommand 中文件“/usr/lib/python2.7/site-packages/IPython/config/application.py”,第 92 行,在 catch_config_error返回方法(应用程序,_args,*_kwargs)文件“/usr/lib/python2.7/site-packages/IPython/config/application.py”,第 413 行,在 initialize_subcommand 中self.subapp.initialize(argv)文件 ”",第 2 行,在初始化中文件“/usr/lib/python2.7/site-packages/IPython/config/application.py”,第 92 行,在 catch_config_error返回方法(应用程序,_args,*_kwargs)文件“/usr/lib/python2.7/site-packages/IPython/html/notebookapp.py”,第745行,初始化self.init_webapp()文件“/usr/lib/python2.7/site-packages/IPython/html/notebookapp.py”,第 632 行,在 init_webapp 中self.http_server.listen(端口,self.ip)文件“/usr/lib64/python2.7/site-packages/tornado/tcpserver.py”,第116行,在listen中sockets = bind_sockets(端口,地址=地址)文件“/usr/lib64/python2.7/site-packages/tornado/netutil.py”,第103行,bind_socketssock.bind(sockaddr)文件“/usr/lib64/python2.7/socket.py”,第 224 行,在 meth 中返回 getattr(self._sock,name)( 参数)
错误:[Errno 99] 无法分配请求的地址

我的系统配置是
{'commit_hash':'681fd77',
'commit_source': '安装',
'default_encoding': 'UTF-8',
'ipython_path': '/usr/lib/python2.7/site-packages/IPython',
'ipython_version': '2.1.0',
'os_name': 'posix',
'平台':'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(默认,2013 年 11 月 21 日,15:55:38)[GCC]'}

我的龙卷风版本是
名称:python-tornado/版本:3.2.1-2.1/Arch:x86_64

最有用的评论

如果你尝试--ip=127.0.0.1呢?

所有13条评论

如果你尝试--ip=127.0.0.1呢?

你好

那行得通(应该已经想到了)。 我把它放到我的 ipython_notebook_config.py 中。 我想知道为什么行为改变了......
所以从我的角度来看,我可以关闭这个问题。 只有当人们可以将错误消息更改为指向解决方案的有意义的内容时,我才会保持这个问题的开放。 但也许这个问题太具体了......

非常感谢您的快速答复!

复制 #6191 中的解释:

默认情况下,IPython 在 localhost 上侦听。 127.0.0.1 应该表现相同,并且几乎在所有情况下都是如此。 一些可以以不同方式处理的情况包括本地代理和/或防火墙(通常是由于配置疏忽,而不是故意的行为差异)。 我们已经发现 localhost 有效而 127 无效的情况,反之亦然,因此默认值没有明确正确的答案。

你有防火墙和/或代理配置吗? 如果是这样,您是否控制其配置? 我会将这种行为描述为您的网络设置中的一个错误,但它可能不是您有权修复的错误。

谢谢,指定 127.0.0.1 也为我解决了套接字错误

如果你在云服务器中使用它,你可以使用--ip=0.0.0.0

感谢您继续关注这个问题,我正在云服务器上设置笔记本服务器。 并将侦听 ip 指定为“0.0.0.0”确实解决了同样的问题。

谢谢,我遇到了同样的问题:)

谢谢它解决了它!

对于来自搜索结果的人:检查您的/etc/hosts是否有拼写错误和 ipv6 配置。 localhost应该只指向 ipv4 环回 ( 127.0.0.1 ),而不是ipv6 ( ::1 )。 这可以破坏其他东西,不仅仅是 jupyter。

例如,这是错误的:
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
还行吧:
::1 localhost6 localhost6.localdomain6

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

@mlazowik 非常感谢! 这解决了我的问题 - 我想知道有多少人有同样的问题,但选择了 127.0.0.1 解决方案。 这是正确的解决方案(确保主机名查找表​​正确)。 在我的实例(Arch Linux)中,我的/etc/hosts被“运送”如下:

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

我更正了以下内容:

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

如果你在云服务器中使用它,你可以使用--ip=0.0.0.0

对我来说(在 mac 上)只有 --ip=0.0.0.0 可以在本地运行的 docker 上工作。

就我而言,这是由于 IPv6 中重复的 ::1 环回地址的 /etc/hosts 所致。
注释掉第二个环回地址::1后,错误消失。

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

@mlazowik我在使用相同的最终解决方案时遇到了同样的问题,但发现man /etc/hosts在他们的示例中有这个很有趣,这让我无法弄清楚我的问题(因为推定的权威推荐了你所说的有问题):

# 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

我从::1条目中删除了localhost (保留其他两个),一切都很好。 我还假设ip6是一个ipv6关键字,但也许ip6-foofoo6都很好(例如,只是某种形式的名称修改与ipv4等价物)?

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

peter-ch picture peter-ch  ·  4评论

ipython picture ipython  ·  3评论

sataliulan picture sataliulan  ·  4评论

ederag picture ederag  ·  3评论

frenzymadness picture frenzymadness  ·  3评论