
上个月帮课题组同事在新买的 Win11 笔记本上搭 MLatom 计算环境前后折腾了大半天才把环境理顺。回头看大部分时间其实都耗在 Windows 原生环境下的 Python 依赖冲突、路径分隔符、权限问题这些烂事上。后来干脆全部迁移到 WSL2 里重装连下载带配置不到一小时就跑通了。这篇就是把那次完整的落地过程记录下来Window11 上启用 WSL2、安装 Ubuntu 22.04、配置 conda 环境最后把 MLatom 装好并验证可用。这篇文章适合两类人一是刚接触 WSL2 想搭科学计算环境的新手照着一步步做基本不会卡二是已经在 Windows 上装过 MLatom 或其他计算化学包、被各种版本问题折磨过的人。读完你能清楚地知道每个环节为什么要这么操作遇到报错时怎么定位以及哪些坑是完全可以提前避开的。1. 为什么我会坚持在 WSL2 里搭 MLatom而不是 Windows 原生环境1.1 Windows 原生环境跑科学计算的三层烦恼先说最直观的路径问题。Windows 用反斜杠\和盘符C:Linux 用正斜杠/和挂载点很多 Python 包会在内部拼接路径一旦遇到硬编码的路径分隔符就直接崩。比如跑 MLatom 的 example 脚本时有时候报错信息里出现C:\Users\xxx和/home/xxx混在一起排查起来非常头疼。其次是编译链问题。PyTorch、ASE、SciPy 这些科学计算包在 Linux 下基本是官方优先支持Windows 侧的安装则经常需要本地编译。本地编译意味着你必须装好 MSVC、CMake、gfortran还要指望它们版本匹配。我在一台干净的新机器上试过光是让一个老版本的扩展包在 Windows 上编译通过就折腾了半个晚上。而在 Linux 下大部分预编译 wheel 直接装几秒钟的事。第三是权限模型。Windows 的文件夹权限、杀毒软件实时扫描、只读属性这些问题会让某些科学计算工具产生很奇怪的副作用。比如一个需要写临时文件的脚本在 Linux 下一切都是文件、权限清晰在 Windows 下可能因为杀毒软件锁定了文件导致程序挂起。这类问题不是不能解决但每次都要多花时间去排查。1.2 WSL2 是真 Linux 内核不是虚拟机软件WSL2 和 WSL1 有本质区别。WSL1 是一个系统调用翻译层兼容性有限很多 Linux 特有的行为不一致。WSL2 则是在轻量虚拟机里跑一个真正的 Linux 内核这意味着你在 Ubuntu 里执行的每一条命令、装的每一个包行为都和一台真实的 Linux 服务器基本一致。相比传统虚拟机WSL2 的启动是秒级的内存占用也小还能直接访问 Windows 文件系统。日常打开终端就进 Linux不用经历完整的开机启动流程。对于做计算的人来说WSL2 的性能损失很小CPU 密集任务基本接近原生水平。1.3 MLatom 的依赖生态决定了 Linux 是第一优先MLatom 是一个 AI 增强的量子化学与分子模拟工具包大量依赖 PyTorch、NumPy、SciPy、ASE 这些生态。PyTorch 在 Linux 上的 CUDA 支持最完整、更新最快很多针对科学计算的扩展库也都优先保证 Linux 兼容性。更关键的是绝大多数超算集群和高性能计算节点都是 Linux 系统你在本地 WSL2 里跑通的计算流程迁移到服务器上几乎是无缝的。这也是我特别推荐在 WSL2 里搭建的原因之一本地开发环境和生产环境同构能少踩很多本地能跑服务器跑不了的坑。2. 装 WSL2 之前先解决三个老问题虚拟化、功能开关、内核更新卡住2.1 先确认 CPU 虚拟化已经打开WSL2 依赖虚拟化技术。如果你的 CPU 虚拟化没启用后面会直接报错此计算机上未启用虚拟化请确保计算机固件设置中已启用虚拟机平台。检查方法很简单打开任务管理器切到性能选项卡点 CPU右下角会显示虚拟化已启用或已启用。如果显示未启用就需要进 BIOS/UEFI 开启。Intel 平台一般是找Intel Virtualization Technology、Intel VT-xAMD 平台找SVM Mode部分主板也直接叫Virtualization、Virtualization Technology。不同主板按键不一样常见的有 Del、F2、F1、F10进去之后在 Advanced 或 Security 菜单下找。启用后保存重启再回来确认。这一步千万别跳过我见过太多人在软件层面折腾半天最后发现只是 BIOS 里没开虚拟化。2.2 Win11 家庭版没有 Hyper-V 开关其实你根本不需要它网上搜索window11家庭版没有hyper-v开关会出现很多帖子。这里说清楚WSL2 依赖的不是完整的 Hyper-V 角色而是两个更底层的 Windows 功能——适用于 Linux 的 Windows 子系统和虚拟机平台。家庭版的可选功能列表里确实没有 Hyper-V 的管理界面但这不影响装 WSL2。直接在管理员 PowerShell 里执行dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart或者用Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux,VirtualMachinePlatform执行完重启电脑。重启后可以用下面命令确认功能确实生效Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatformState 显示 Enabled 就说明没问题。这一步做完家庭版和 WSL2 之间的最大障碍就清除了。2.3 wsl --update 卡住怎么办Win11 安装 WSL2 的内核更新时wsl --update命令如果一直卡住大概率是网络问题因为内核更新包通常从微软或 GitHub 下载。这时候不要死等有两个替代方案。第一个方案是去微软官方商店安装 WSL 应用。商店版 WSL 自带较新的内核装完后在 PowerShell 里执行wsl --version能看到版本信息。第二个方案是去 Microsoft/WSL 的 GitHub Releases 页面手动下载内核安装包.msi 或 .msixbundle下载完双击安装再执行wsl --update一般就能正常识别。如果你之前用的是 WSL1装完新内核后需要把发行版迁移到 WSL2wsl --set-version Ubuntu-22.04 2迁移完成后用wsl -l -v查看VERSION 列显示 2 就是成功了。3. 从 wsl --install 到 Ubuntu 22.04安装、搬家、初始化一整套3.1 一条命令装好 WSL2 和 Ubuntu 22.04在管理员 PowerShell 里执行wsl --install -d Ubuntu-22.04这个命令会自动启用必要的 Windows 功能、下载 WSL2 内核、安装 Ubuntu 22.04 发行版。如果系统提示需要重启先重启再继续。第一次启动 Ubuntu 时会让你设置 Linux 用户名和密码。这个用户名不要求跟 Windows 用户名一致密码输入时终端不显示字符是正常的别以为键盘坏了。装完后回到 PowerShell执行wsl -l -v确认 Ubuntu-22.04 的 VERSION 是 2。如果是 1执行前面提到的wsl --set-version迁移。顺带设置默认版本为 2wsl --set-default-version 2这样以后安装其他发行版时都会走 WSL2。3.2 别让 C 盘爆掉把整个 WSL 搬到 D 盘Miniconda 加上科学计算依赖轻松吃掉 20 到 30GB 空间。如果你的 Windows 系统盘比较紧张建议一开始就把 WSL 系统搬走。步骤其实就是导出、注销、导入三步。先在 PowerShell 里wsl --shutdown wsl --export Ubuntu-22.04 D:\wsl\ubuntu.tar导出完成后wsl --unregister Ubuntu-22.04 wsl --import Ubuntu-22.04 D:\wsl\ubuntu D:\wsl\ubuntu.tar需要注意wsl --unregister会删除原系统里的所有文件所以执行前一定要确认 tar 包完整导出。导入后系统默认会用 root 用户登录这不符合我们的使用习惯。进入 Ubuntu 后编辑/etc/wsl.conf[user] default 你的用户名保存后重启 WSL再进入就是自己的用户了。3.3 进系统后的基础初始化进入 Ubuntu 后先做两件事换源和装基础工具。Ubuntu 22.04 的软件源配置在/etc/apt/sources.list。先备份再替换sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i s|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list sudo sed -i s|http://security.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list sudo apt update然后装基础工具sudo apt install -y build-essential git curl wget unzipbuild-essential包含 gcc、g、make 等编译工具后面装一些需要编译的 Python 包会用到。顺手确认一下系统信息cat /etc/os-release uname -a看到 Ubuntu 22.04 和 Linux 内核版本号基础系统就算就位了。4. 配置 conda先理解环境隔离再动手安装 Miniconda4.1 为什么坚持用 conda 而不是直接 pip 一把梭MLatom 依赖的 PyTorch、SciPy、ASE 这些包之间经常有版本联动如果你把所有东西都装在系统 Python 或 conda 的 base 环境里今天装这个项目、明天装那个项目很快就会出现版本冲突。conda 的核心价值就是环境隔离每个项目一个独立环境互不干扰。打个比方系统 Python 是一个公共厨房大家都在里面做饭调料混着用conda 虚拟环境是每人一个独立小厨房你的姜葱蒜和别人的互不串味。做计算化学的人手上很可能同时有好几个项目环境隔离不是可选项是刚需。Anaconda 和 Miniconda 的区别也很简单Anaconda 是一个大礼包预装了很多数据科学包体积大Miniconda 只带 conda 本身和 Python需要什么装什么。做 MLatom 环境搭建用 Miniconda 就够了。4.2 Miniconda 下载与安装进入 Ubuntu 终端用清华镜像下载安装脚本wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh如果镜像下载速度不理想也可以直接用官方源wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh然后执行bash Miniconda3-latest-Linux-x86_64.sh安装过程中一直回车阅读协议输入 yes 同意安装位置默认在~/miniconda3。最后会问你是否运行conda init输入 yes它会自动把 conda 写进~/.bashrc。安装完重新加载配置source ~/.bashrc验证conda --version如果每次打开终端不想自动激活 base 环境可以关闭自动激活conda config --set auto_activate_base false我个人的习惯是关闭自动激活需要时手动conda activate进入某个环境避免 base 被无意中污染。4.3 conda 换源让创建环境不再等到天荒地老默认 conda 使用的官方源在国外国内网络环境下创建环境经常卡住。修改~/.condarc配置清华源channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud保存后执行conda clean -i同时把 pip 源也换掉pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这样后续用 pip 安装 Python 包时速度也会快很多。5. MLatom 安装实战独立环境、依赖处理与首次验证5.1 MLatom 是什么以及为什么单独建环境MLatom 是一款开源的 AI 增强量子化学与分子模拟软件支持机器学习势能、光谱预测、分子动力学、QM/MM 结合等多种计算任务。它通过命令行和 Python API 两种方式使用对计算化学研究者来说是一个衔接传统量子化学和机器学习的实用工具。MLatom 的依赖链比较复杂涉及 NumPy、SciPy、ASE、PyTorch 等不同版本之间兼容性敏感。所以务必为它单独创建一个 conda 环境不要跟 base 或者其他项目混用。5.2 创建 mlatom 环境并安装创建独立环境Python 版本选择 3.11这个版本在 MLatom 当前版本下兼容性比较好conda create -n mlatom python3.11 -y conda activate mlatom激活后确认一下当前解释器which python然后安装 MLatom。稳定版用 PyPIpip install mlatom如果想要最新开发版可以从 GitHub 安装pip install githttps://github.com/dralgroup/mlatom.git安装完成后验证mlatom -v或者用 Python 导入测试python -c import mlatom; print(mlatom.__version__)能正确输出版本号就说明核心安装成功。如果 pip 在安装过程中因为缺少某些本地库报编译错误先把 numpy、scipy、pandas 手动装好再重试pip install numpy scipy pandas pip install mlatom5.3 首次运行的认证、PyTorch 后端和 GPU 怎么取舍MLatom 第一次运行时会提示你进行免费注册完成学术许可确认。具体流程按官方 README 的提示操作即可一般只需要注册一个账号并填写 token整个过程几分钟。MLatom 的机器学习模块可以通过 PyTorch 作为后端运行。默认安装的 PyTorch 是 CPU 版刚开始接触时 CPU 完全足够跑一些小分子的示例。等需要训练大规模机器学习势能或者做大批量计算时再考虑 GPU。如果你确认要上 GPU先保证 Windows 侧装的是支持 WSL 的 NVIDIA 驱动然后在 mlatom 环境里按 PyTorch 官方给出的命令安装 CUDA 版。比如pip install torch --index-url https://download.pytorch.org/whl/cu121具体 CUDA 版本号建议去 PyTorch 官网用生成配置工具选择因为不同时期推荐的版本不一样。装完用下面命令验证能否正常调用 GPUpython -c import torch; print(torch.cuda.is_available())输出 True 说明 WSL2 里的 GPU 透传已经接通。6. 把 VS Code 和 PyCharm 接上 WSL 里的 conda 环境6.1 VS Code Remote-WSL最省事的开发方式VS Code 的 Remote-WSL 功能可以理解为编辑器界面跑在 Windows 上但所有代码运行、终端、调试都在 WSL 里完成。使用方式非常简单在 Ubuntu 终端里进入你的项目目录cd ~/mlatom-tests code .VS Code 会自动打开并连接 WSL。接着安装 Python 扩展按 CtrlShiftP 打开命令面板选择 Python: Select Interpreter然后选中mlatom环境。这个环境的 Python 路径一般是/home/你的用户名/miniconda3/envs/mlatom/bin/python你会发现 conda 管环境、VS Code 管编辑两者各司其职。很多人问 conda 和 VS Code 的区别其实根本不冲突conda 负责提供隔离的 Python 运行时VS Code 负责让你愉快地写代码。6.2 PyCharm 配置 WSL 解释器如果你习惯 PyCharm配置也不复杂。打开 Settings → Project → Python Interpreter点击 Add Interpreter选择 WSL然后选择对应的 Linux 发行版。关键点是填对 Python 解释器路径。可以先在 WSL 终端里执行which python拿到完整路径一般是/home/你的用户名/miniconda3/envs/mlatom/bin/python把路径填进去后PyCharm 会自动识别这个环境的包列表然后你就拥有了一个完整的 Linux 开发环境还能直接右键运行 Python 脚本。6.3 文件互通怎么用才合理WSL2 和 Windows 之间的文件可以互相访问。Windows 盘在 WSL 里挂载在/mnt/c而 WSL 的系统文件夹也可以从 Windows 的文件资源管理器地址栏输入\\wsl$访问。但这里有个重要的性能经验如果你把大量小文件放在/mnt/c下运行计算或训练速度会明显变慢因为跨文件系统的 I/O 开销很大。建议代码、conda 环境、以及频繁读写的临时文件全部放在 WSL 的 Linux 文件系统里比如/home/你的用户名/。体积大、不频繁读写的输入数据集可以留在 Windows 盘通过/mnt/c/...路径访问。7. 踩坑实测记录我整理了一份可以直接对着排查的清单7.1 高频问题对照表现象根因解决办法WSL2 无法启动提示未启用虚拟化BIOS 里虚拟化被关闭进 BIOS 开启 Intel VT-x / AMD SVMWin11 家庭版找不到 Hyper-V 开关家庭版不提供 Hyper-V 图形界面不需要用 dism 命令启用虚拟机平台功能wsl --update 一直卡住内核更新包下载受限商店版 WSL 或 GitHub Releases 手动下载安装在 PowerShell 里输入 conda 提示conda 不是内部或外部命令conda 装进了 WSLWindows 侧当然找不到进入 Ubuntu 终端里用 conda或者配置 WSL 环境变量Ubuntu 启动后 apt 更新非常慢使用官方软件源换成清华或中科大镜像conda 创建环境很慢conda 默认源在国外配置 ~/.condarc 清华源pip 安装很慢pip 默认 PyPI 源pip config set global.index-url换源C 盘空间迅速减少WSL 虚拟磁盘放在 C 盘wsl --export/--import整体迁移import mlatom 报找不到模块没有在正确的 conda 环境里安装先conda activate mlatom再用which python确认绘图窗口无法弹出缺少图形显示环境Win11 自带 WSLg 可直接弹窗必要时设置MPLBACKENDAgg保存 PNG内存被 WSL 占满WSL2 默认占用一半物理内存在 Windows 用户目录写入.wslconfig限制内存.wslconfig示例放在 Windows 的用户目录下比如C:\Users\你的用户名\.wslconfig[wsl2] memory8GB processors4 swap8GB修改后执行wsl --shutdown再重新进入配置生效。这样 WSL 不会在后台无节制地吃内存日常使用 Windows 也不受影响。7.2 给第一次配置的人几条实用建议第一不要什么事都往 conda 的 base 环境里塞。环境隔离的价值在于即使你把一个环境搞崩了其他项目完全不受影响。我为 MLatom 单独建环境也是为了将来可以放心地升级 PyTorch 或者换 Python 版本。第二养成备份环境的习惯。配好一套可用的环境后顺手导出一份清单conda env export mlatom_env.yml以后要重建环境一行命令搞定conda env create -f mlatom_env.yml第三遇到报错先判断是 Windows 层问题还是 Linux 层问题。比如 WSL2 无法启动多半是虚拟化或内核问题conda 命令找不到多半是 PATH 或 Shell 配置问题。分清楚边界再去网上搜效率高很多。第四建议用一个最简单的 MLatom 示例作为整个环境的验收标准。跑通一个单点能计算能正常输出能量数值就说明从 WSL2 到 conda 到 MLatom 的整条链路都通了。后面要接 GPU、要调用外部量子化学程序都是在这个底座上继续加料。我自己配完这套环境后最直观的感受是后续再到服务器上部署 MLatom几乎就是重复同样的步骤。WSL2 让我把本机和超算之间的距离缩小到几乎可以忽略这比任何单独的工具优化都更有价值。希望这篇记录能帮你少走一点弯路把更多时间留给计算本身。