我正在尝试从 WSL(适用于 Linux 的 Windows 子系统)运行 Jupyter 笔记本。它使用的默认端口是 localhost:8888
但是如果我尝试通过浏览器访问该功能,什么也不会发生。
如果我使用 启动 Jupyter jupyter notebook --port 8080
,我就可以毫无问题地连接 localhost:8080。
所以我认为这是防火墙问题。我正在运行 Windows Defender,但对它一无所知。我尝试设置传入规则以允许端口 8888,按照说明操作这里但这没用。然后我尝试添加传出规则,但这也没用。
我可能做错了一些非常简单的事情。
有任何想法吗?
答案1
首先,让我们先了解如何获取 WSL 分发二进制路径。请参阅 SuperUser 的以下问答:
- 如何从 Windows 10 WSL 访问 linux/Ubuntu 文件?
- 从 Windows 访问 Ubuntu 数据(例如“/etc”)
- Linux 子系统的文件系统位于 Windows 10 中的什么位置?
后安装 jupyter notebook在 WSL 中,解析 python 二进制文件的完整路径。从上一个答案中获取发行版安装路径并附加以下内容:
- Python2的:
\rootfs\usr\bin\python2.7
- Python3:
\rootfs\usr\bin\python3.5
完整路径如下:
C:\Users\%USERNAME%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\usr\bin\python3.5
太长了,不是吗?现在在 Windows 防火墙中允许。可以使用 Windows 防火墙管理控制台 ( wf.msc
)。这里netsh
使用命令。以管理员身份运行此命令:
netsh advfirewall firewall add rule Name=Python Program="put-the-path-here" LocalPort=8888 Action=allow Dir=Out
或者使用 PowerShell:
New-NetFirewallRule -DisplayName "Python" -Name "Python" -Direction Outbound -Program "put-the-path-here" LocalPort 8888 -Action Allow
这将允许该 Python 二进制文件使用端口 8888。如果 Windows 端浏览器也受防火墙保护,则允许它接受连接。有关更多详细信息,请参阅网络管理员和新 NetFirewallRule命令语法。