在远程计算机上启动 jupyter 实验室抛出错误

时间:2021-03-16 23:38:07

标签: python sockets jupyter-notebook jupyter-lab sendto

我的 Ubuntu 20.10 个人服务器上安装了 anaconda 版本 4.9.2 和 Jupyter 实验室版本 2.2.9。直到大约两个月前,我才能够在我的远程服务器(通过 MobaXterm 访问)上远程启动 jupyter 实验室。我使用了这个命令: jupyter lab --no-browser --port=40000 --ip=$HOSTNAME

然后我习惯于将此端口转发到 MobaXterm 中的本地端口 8080,并在我的工作笔记本电脑上打开本地端口。

由于搬家重置了整个设置后,我发现我无法再转发本地端口了。我收到此错误消息:

    Traceback (most recent call last):
  File "/home/kvemuri/anaconda3/bin/jupyter-lab", line 10, in <module>
    sys.exit(main())
  File "/home/kvemuri/anaconda3/lib/python3.7/site-packages/jupyter_core/application.py", line 254, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "/home/kvemuri/anaconda3/lib/python3.7/site-packages/traitlets/config/application.py", line 844, in launch_instance
    app.initialize(argv)
  File "/home/kvemuri/anaconda3/lib/python3.7/site-packages/traitlets/config/application.py", line 87, in inner
    return method(app, *args, **kwargs)
  File "/home/kvemuri/anaconda3/lib/python3.7/site-packages/notebook/notebookapp.py", line 2085, in initialize
    self.init_webapp()
  File "/home/kvemuri/anaconda3/lib/python3.7/site-packages/notebook/notebookapp.py", line 1757, in init_webapp
    success = self._bind_http_server()
  File "/home/kvemuri/anaconda3/lib/python3.7/site-packages/notebook/notebookapp.py", line 1764, in _bind_http_server
    return self._bind_http_server_unix() if self.sock else self._bind_http_server_tcp()
  File "/home/kvemuri/anaconda3/lib/python3.7/site-packages/notebook/notebookapp.py", line 1790, in _bind_http_server_tcp
    self.http_server.listen(port, self.ip)
  File "/home/kvemuri/anaconda3/lib/python3.7/site-packages/tornado/tcpserver.py", line 151, in listen
    sockets = bind_sockets(port, address=address)
  File "/home/kvemuri/anaconda3/lib/python3.7/site-packages/tornado/netutil.py", line 161, in bind_sockets
    sock.bind(sockaddr)
OSError: [Errno 22] Invalid argument

我不太了解端口转发的内部工作原理,我盲目地按照此页面上的说明进行操作:https://wiki.fysik.dtu.dk/gpaw/summerschools/summerschool18/accesswin.html

this question 中的解决方案提供了一些线索,但我不确定如何“将套接字绑定到同一网络上的本地网络接口”,如果这甚至是我需要做的。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

解决了这个问题。解决方案是提供不同的IP: jupyter lab --no-browser --ip=0.0.0.0 --port=40000 然后继续转发端口。我从这里得到了这个想法:https://stackoverflow.com/a/57209107/3258696

我不明白为什么这会起作用,或者为什么 jupyter lab --no-browser --ip=127.0.0.1 --port=40000jupyter lab --no-browser --ip=127.0.1.1 --port=40000 不起作用。

当我执行 cat /etc/hosts 时,我得到:

127.0.0.1 localhost
127.0.1.1 kv_home

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

任何人都可以分解为什么这个错误和修复发生?

相关问题