Windows 11 WSL2 GUI加持:一站式配置Jupyter Notebook开发环境

张开发
2026/4/19 0:30:04 15 分钟阅读

分享文章

Windows 11 WSL2 GUI加持:一站式配置Jupyter Notebook开发环境
1. 为什么要在WSL2中运行Jupyter Notebook作为一个长期使用Python进行数据分析和机器学习开发的工程师我深刻理解Jupyter Notebook的重要性。它就像是一个数字实验室笔记本可以让我们把代码、可视化结果和解释性文字完美地结合在一起。但在Windows系统上直接运行Jupyter Notebook总会遇到各种环境配置问题特别是当需要用到Linux特有的一些工具时。Windows 11带来的WSL2 GUI支持彻底改变了这一局面。想象一下你可以在Windows系统中获得一个完整的Linux开发环境而且还能直接显示GUI应用这意味着我们不再需要折腾各种远程桌面或者端口转发就能直接在WSL中运行Jupyter Notebook并看到界面。我最近把主力开发机升级到Windows 11后发现这个功能简直是为数据科学家量身定制的。以前在Windows 10上我们需要通过浏览器访问localhost来使用WSL中的Jupyter Notebook现在可以直接在WSL环境中启动浏览器体验更加原生和流畅。2. 环境准备从零开始配置WSL22.1 安装和启用WSL2首先我们需要确保你的Windows 11系统已经启用了WSL2功能。打开PowerShell管理员身份运行执行以下命令wsl --install这个命令会自动安装WSL2所需的所有组件。安装完成后我们需要设置WSL2为默认版本wsl --set-default-version 2我建议安装Ubuntu作为默认的Linux发行版因为它有最好的社区支持和软件包生态wsl --install -d Ubuntu安装完成后你可以在开始菜单中找到Ubuntu的快捷方式。第一次启动时会要求你设置用户名和密码记住这个密码因为在执行sudo命令时需要用到。2.2 启用WSL2的GUI支持Windows 11的WSL2原生支持GUI应用但我们需要确保系统已经启用了这个功能。打开Windows设置搜索Windows功能确保以下选项被勾选适用于Linux的Windows子系统虚拟机平台Windows Hypervisor平台安装完成后需要重启电脑。重启后我们可以测试GUI支持是否正常工作。在WSL终端中输入sudo apt update sudo apt install -y gedit gedit如果能看到gedit文本编辑器窗口弹出说明GUI支持已经配置成功。这一步很重要因为Jupyter Notebook的浏览器界面就是通过这个机制显示的。3. 安装和配置Python环境3.1 安装Miniconda虽然WSL自带了Python但我强烈建议使用Miniconda来管理Python环境。它比完整的Anaconda更轻量同时保留了conda环境管理的所有优势。在WSL终端中执行以下命令wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh安装过程中按照提示操作即可我建议将conda初始化添加到.bashrc文件中。安装完成后执行以下命令使更改生效source ~/.bashrc3.2 创建专用环境为了避免包冲突我们为Jupyter Notebook创建一个独立的环境conda create -n jupyter_env python3.9 conda activate jupyter_env在这个环境中安装Jupyter Notebook和相关科学计算包conda install jupyter notebook numpy pandas matplotlib scikit-learn如果你需要GPU支持还可以安装PyTorch或TensorFlowconda install pytorch torchvision torchaudio cudatoolkit11.3 -c pytorch4. 配置和运行Jupyter Notebook4.1 安装浏览器虽然我们可以通过Windows本地的浏览器访问Jupyter Notebook但在WSL中直接运行浏览器体验更佳。我推荐安装Firefoxsudo apt install -y firefox安装完成后可以测试一下firefox你应该能看到Firefox浏览器窗口弹出。这个浏览器将用于显示Jupyter Notebook界面。4.2 首次运行Jupyter Notebook现在我们可以尝试启动Jupyter Notebook了jupyter-notebook几秒钟后你应该能看到Firefox自动打开并显示Jupyter Notebook的界面。如果没有自动打开可以复制终端中显示的URL通常是http://localhost:8888到浏览器中手动访问。我建议先创建一个测试notebook运行一些简单代码验证环境是否正常工作import numpy as np import pandas as pd import matplotlib.pyplot as plt print(Hello from WSL2!) print(fNumPy version: {np.__version__}) print(fPandas version: {pd.__version__}) # 简单的绘图测试 plt.plot([1, 2, 3, 4]) plt.ylabel(some numbers) plt.show()如果一切正常你应该能看到代码执行结果和图形显示。5. 高级配置让Jupyter Notebook更安全高效5.1 设置密码保护默认情况下Jupyter Notebook使用token认证这不太方便。我们可以设置密码来保护我们的notebook。首先生成配置文件jupyter notebook --generate-config然后设置密码。在终端中输入ipython进入交互式环境from notebook.auth import passwd passwd()按照提示输入并确认你的密码系统会生成一个加密后的字符串复制这个字符串。打开配置文件~/.jupyter/jupyter_notebook_config.py找到并修改以下设置c.NotebookApp.password sha1:your_hashed_password c.NotebookApp.ip * c.NotebookApp.open_browser True c.NotebookApp.port 8888 c.NotebookApp.notebook_dir /home/your_username/notebooks5.2 使用nohup后台运行为了让Jupyter Notebook在关闭终端后继续运行我们可以使用nohupmkdir -p ~/notebooks nohup jupyter notebook --notebook-dir/home/your_username/notebooks 这样即使关闭WSL终端窗口Jupyter Notebook也会继续运行。要停止服务可以先用jobs命令查看进程ID然后用kill命令终止。6. 常见问题解决6.1 浏览器无法自动打开如果Jupyter Notebook启动后浏览器没有自动打开可能是默认浏览器设置有问题。可以尝试sudo update-alternatives --config x-www-browser选择已安装的浏览器如Firefox作为默认浏览器。6.2 端口冲突如果默认的8888端口被占用可以在启动时指定其他端口jupyter notebook --port8889或者在配置文件中永久修改端口号。6.3 GPU不可用如果你安装了PyTorch或TensorFlow但GPU不可用首先确保Windows上安装了正确的NVIDIA驱动然后在WSL中安装CUDA工具包sudo apt install -y nvidia-cuda-toolkit安装完成后可以运行nvidia-smi验证驱动是否正常工作。7. 性能优化技巧经过几个月的使用我发现了一些可以显著提升WSL2中Jupyter Notebook性能的技巧将notebook工作目录放在WSL文件系统中而不是Windows文件系统如/mnt/c。WSL文件系统的性能要好得多。增加WSL的内存限制。在Windows用户目录下创建或修改.wslconfig文件[wsl2] memory8GB swap4GB processors4对于大型数据集考虑使用Dask或Vaex这样的库它们可以更好地处理内存限制。定期清理Jupyter内核和缓存jupyter kernelspec list jupyter kernelspec remove old_kernel使用jupyter-lab代替jupyter-notebook它提供了更好的性能和更多功能。8. 实际开发体验分享在实际项目中我发现这个配置有几个明显的优势首先开发环境完全隔离。所有的Python包和依赖都安装在WSL中不会影响Windows主系统的Python环境。当项目需要特定版本的库时可以轻松创建新的conda环境。其次Linux命令行工具的强大功能可以直接使用。在数据科学项目中经常需要处理文本文件或运行shell命令WSL提供了完整的Linux工具链。最重要的是GUI支持让整个开发流程更加流畅。我可以在WSL中直接运行Jupyter Notebook使用Linux版本的浏览器同时还能访问Windows文件系统通过/mnt/c。这种无缝集成的体验大大提高了工作效率。

更多文章