我在WSL2实例中运行Jupyter notebook时遇到了一个奇怪的问题。每次我启动一个新的笔记本电脑,我第一次连接到localhost:8888
(或localhost:XXXX
对于任何其他端口号)需要很长时间才能连接,比如5-10分钟。然而,一旦建立了到该端口的连接,所有后续连接都以正常速度进行。据我所知,延迟并不是特别发生在Jupyter服务器中,因为服务器输出在等待期间没有显示任何GET
请求:
> jupyter notebook .
[I 08:29:21.282 NotebookApp] Authentication of /metrics is OFF, since other authentication is disabled.
[W 08:29:21.729 NotebookApp] All authentication is disabled. Anyone who can connect to this server will be able to run code.
[I 08:29:21.732 NotebookApp] Serving notebooks from local directory: /home/peter/jade_poplar/code/python
[I 08:29:21.732 NotebookApp] Jupyter Notebook 6.4.0 is running at:
[I 08:29:21.732 NotebookApp] http://localhost:8888/
[I 08:29:21.732 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
...
5-10 MINUTES ELAPSE
...
[I 08:38:12.718 NotebookApp] 302 GET / (127.0.0.1) 2.110000ms
然而,这个问题似乎只局限于Jupyter:如果我只是用nc -l 8888
监听端口,然后将浏览器指向localhost:8888
,GET
请求立即显示。
我已经尝试随机修复我在SE上发现的其他问题,例如。这一个,但没有用。任何建议,甚至建议,从哪里开始寻找,将非常感激!这快把我逼疯了虽然我在等待笔记本加载的时候下了很多棋:D
旧答案
我找到了两种方法来避开"等待时间"。在我的系统中
- 在控制台输出在
Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
挂起后按一次Ctrl+C - 设置
DISPLAY
环境变量为零:DISPLAY= jupyter notebook .
。显然,同样的技巧也适用于pip。
更新1
经过一些调试后,我发现,--no-browser
选项也可以做到这一点:
jupyter notebook --no-browser .
jupyter-notebook
默认在浏览器中打开localhost:8888
。我假设WSL2在打开默认浏览器时出现问题,因此会超时。
更新2
为了证实我的猜测,从UPDATE 1,我将WSL设置为能够打开浏览器窗口:在WSL (ubuntu)安装firfox:
sudo apt install firefox
在WSL2上设置X11转发
使用此设置jupyter-notebook
正常启动,localhost:8888
在firefox中打开。