工作环境配置纪实

前言

本文记录工作环境配置的过程,意在对自己的经历作一复盘、整理和记录,并希望能方便到有需要的人。

基于第二个目的,本文中一些解释说明可能并非源自我实际走过的弯路,而是意在为可能需要的读者提供提醒。

本文中“配置”一词含义包含最简单的直接安装工作,也包含具体手动的配置工作。

配置工作得到了来自 LLM(绝对主体是 DeepSeek,也有 Gemini 和 ChatGPT)的大量介绍、解释和指导,也经过了自己大量的尝试摸索,同时也参看了一些官方文档。本文中的介绍性、解释性文字则均由我自己写出,基于个人认识、记忆与理解,难免出现错误纰漏,还望读者海涵与斧正。

本人为中国科学技术大学生命科学学院 2025 级学生,有 OI 经历,无 BO 基础。本文所记录的工作环境,是基于我自身相关学习需要。而因为尚处于起步学习阶段,且众所周知科大本科一年级事实上几乎全都是数理基础课程,所以本文只作为环境搭建的纪实和对读者一点基础性的帮助,至于其它方面需求恕本人实在无能为力。

本文创建于 2026-02-15,记录至此时的配置过程;后续也会依据实际情况,随经历的增加而更新。


具体配置内容一览

斜体为将不会在本文中详细介绍的内容。加粗为重点记录的内容。

这里只列出配置主体的条目,具体关注点不妨参看目录。

  • WSL2 Ubuntu 24.04 LTS, VSCode Remote

  • Anaconda (miniconda 3)

  • NumPy, SciPy

  • \(\LaTeX\)\(\TeX\) Live 2025)

  • Matplotlib

  • Jupyter Lab, Jupyter Notebook

  • SnapGene

  • PyMOL

  • VMD

  • NVIDIA CUDA

  • GROMACS

  • MDTraj


1. 系统环境

1.1. WSL2 Ubuntu 24.04 LTS, VSCode Remote

不需要记录。如有需要,可以查阅互联网上丰富的教程资源或者直接询问 LLM。


1.2. WSLg

1.2.1. 简介与说明

WSLg 是 Windows 11 和较新版本(事实上只要正常更新,版本肯定早已足够)的 Windows 10 支持的功能,原生支持 X11 和 Wayland 转发。有了 WSLg,无需任何额外工具(例如在此之前常用的 VcXsrv 等)和配置,即可基本正常运行使用各种 WSL 上具 GUI 的程序。

WSLg 要求 WSL 版本为 2。事实上,WSL2 除此之外还有许多优点,建议在没有特殊需求时默认选择 WSL2。

注意我们当然需要必要的 GUI 库,但是完全无需诸如 Gnome 等的桌面环境。事实上,WSL 作为轻量、面向开发者和科研工作者的 Linux 解决方案,安装桌面环境既无必要也不应该。


1.2.2. 在 WSL Settings GUI 中启用 WSLg

关于符合条件但未启用 WSLg 的现存 WSL 应如何启动 WSLg,不妨直接询问 LLM。这里我需要记录的是:如果你发现 Powershell 里 wsl --version 明明已经显示了 WSLg 版本,但是你的 WSL 就是不能显示 GUI,那么可能其实只是下面这个开关没开:

WSL Settings 中

(在 Windows 开始菜单中寻找 WSL Settings 并打开)


2. Python 基本环境

2.1. Anaconda (miniconda 3)

2.1.1. 简介与说明

Anaconda 本身大概是如雷贯耳、无需介绍的存在。简单介绍一下即,作为一个环境和包管理器,其允许我们创建、管理和同时使用相互隔离的不同环境,这些环境中可以有不同的 Python 版本、不同的库、不同的依赖关系而互不干扰。

事实上,使用这一工具的裨益,我们在后文很快就将一窥。

很多相关书本和在线课程中使用的是 Windows 上的具 GUI 的 Anaconda 客户端。我们则选用不具 GUI 且在其它方面也有所精简的 miniconda(同样来自 Anaconda Inc.)。事实上 Python 数据分析库 pandas 的最初作者 Wes McKinney 在他所著的 Python for Data Analysis (O'Reilly) 书中选用的正是 miniconda 3,而这也正是我选用 miniconda 3 的直接原因。不具 GUI 和精简则可以算是根本原因。

本文不会介绍 Anaconda 的使用。后续记录的各项工具也同样专注于记录安装与配置,不会介绍其使用。


2.1.2. 安装与配置

2.1.2.1. 安装

$ sudo aptitude update && sudo aptitude upgrade -y
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ bash Miniconda3-latest-Linux-x86_64.sh
$ source ~/.bashrc

【注解】

  • 行首 $ 符号不是指令内容,而是指示该行内容为应以普通权限身份在终端输入的指令。同理后文中可能出现的 # 指示应以 root 权限输入的指令,In[*]: Out[*]: >>> 等也均为提示符,均不是指令内容本身。此约定全文有效。

  • 第 1 行:(1) 通过包管理器 aptitude 执行列表更新和包升级。这是每次通过 apt, apt-get, aptitude 等包管理器安装新包前应例行的习惯性工作。此后默认省略,请读者不要忘记自己安装新包前先 update 和 upgrade 一下。(2) 我本人习惯使用 aptitude,一般教程中普遍使用 apt,就本文情境和目的而言影响不大,感兴趣的读者无妨自行研究并挑选最适合自己的,无兴趣则依教程中使用 apt 或依本文使用 aptitude 均可,甚至混用一般也没什么问题。(但需要注意的是,conda 和 pip 应尽量避免混用。)

  • 第 2-3 行:下载和运行官方安装脚本。

  • 第 4 行:(1) 让 conda 对 bash 的修改生效。(2) 本文将一直使用 bash 作为 shell。如若读者不知道这两个词的含义,则无须在意。

安装完成并执行第 4 行后,可以看到终端的命令行提示符前端出现了 (base) 字样。这是 conda 通过修改 Prompt String 1(简称 ps1,用来规定 bash 提示符格式与内容)实现的用以指示当前激活的 conda 环境的功能。


2.1.2.2. 关闭自动激活,酌情选择是否关闭修改 ps1

我们关闭 conda 的自动激活:

$ conda config --set auto_activate false

之后进入终端,conda 就不会再自动激活环境了。这样做的好处有二:一是避免将本不希望在 conda 环境中执行的操作误在 conda 环境中执行;二是只有在确实需要使用 conda 的时候,提示符才会显示 conda 添加的环境指示符,避免了在与 conda 完全无关的工作场景中(例如在编写 C++ 代码、在使用 npm 管理 Node.js 包、在使用 XeLaTeX 编译文档等等),(base) 这样的与当前工作和环境毫不相干的字样始终存在。

如果确实完全不想要这个提示功能,则也可直接禁止 conda 修改前述 ps1:

$ conda config --set changeps1 false

之后重启终端或 source ~/.bashrc 即可。

注意自动激活和环境提示符功能独立,即便禁止 conda 修改 ps1 从而使环境提示符永不显示,如果没有关闭自动激活功能的话,依然面临(甚至不难发现风险更大)误在某 conda 环境中执行操作的问题。显然大多数情况下,关闭自动激活而保留环境提示符才是合理的选择


2.1.2.3. 更换源

我们往往通过更换合适的源来加快下载过程。

清华大学 TUNA 维护的 清华源 和由 中国科学技术大学 LUG 维护的 科大源 可能是国内用户最常用和熟知的两个镜像源。

若更换为清华源:

$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

若更换为科大源:

$ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
$ conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/

事实上,我们并非真的在“更换源”,而是在源列表中添加了优先级更高的源,今后 conda 会优先在这些源中寻找和获取包。

另外,如果你通过下面的命令跟踪重定向,就会发现其实科大源的 /pkgs/main/ 被重定向到了北京外国语大学(BFSU)源,而后者又被重定向到了清华源:

$ curl -I -L https://mirrors.ustc.edu.cn/anaconda/pkgs/main/

而由以下命令可知 /cloud/conda-forge/ 并没有被重定向:

$ curl -I -L https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/

Yet another Fun but Useless Fact.


2.1.3. 安装和使用 mamba

mamba 是一个与 conda 完全兼容的环境和包管理器,使用 C 和 C++ 编写。因 C 和 C++ 相比 Python 本身具备的极大效率优势,以及 mamba 对并行下载的支持(conda 只能顺序下载),在处理大量包和复杂依赖关系时 mamba 比 conda 快得多(有时 conda 需要几小时的任务 mamba 几分钟就可以完成)。

mamba 本身可以直接通过 conda 安装:

$ conda install mamba

安装 mamba 后,只需要将原先各命令 conda ... 替换为 mamba ... 就可以无缝转用 mamba 了。

It's been a long day without you my friend...


2.2. NumPy, SciPy

关于这两个已经成为事实标准和事实基础的库不作介绍。它们的安装和配置也暂时没什么值得注意的地方,直接 conda install 或者 mamba install 即可。


2.3. Matplotlib

2.3.1. 简介与说明

Matplotlib 也已经成为数据可视化领域事实上的标准。而当我们构建了畅通连贯的工作流之后,作为 Python 库的 Matplotlib 可以自然地集成于其中。

安装并无什么需要记录的地方,同样 conda install 或者 mamba install 即可。下面要重点介绍三个方面:解决终端 IPython 不能显示 Matplotlib 生成的图像的问题;选择后端;生成与 \(\LaTeX\) 尤其是 XeLaTeX 文档拥有一致字体等样式的矢量图。


2.3.2. 实时显示生成的图像

终端中的 IPython 并不能显示 Matplotlib 画出的图。欲解决此问题,我们有三种较为方便的选择,其中第一种保持继续在终端中,可供了解但并不实用;后两种离开终端,均为推荐且被广为使用的方法。

2.3.2.1. 使用 Qt 后端(可供了解)

在 IPython 输入如下命令:

In[*]: %matplotlib qt

【注解】

  • 这不是 Matplotlib 命令或 Python 命令,而被称作“魔法命令”,是 IPython 和 Jupyter 所特有的。这条命令的含义是使用 Qt 后端(代替默认内联后端)。关于后端的更多选择和配置方式,会在 2.3.3. 节 中进一步介绍。

此后,在该 IPython 会话中,每次调用 pyplot 等生成图像后,都会弹出一个 Qt 窗口显示当此生成的图像。下图为一例。

但是需要注意,在 IPython 中,每次执行一个 In 后,pyplot 都会生成一个新的 FigureAxes 对象(关于这两个是什么,可参看 Matplotlib 教学资料,本文不作介绍)。这意味着,绘制一幅图的代码需要一次性写完——而在终端中这很不方便。事实上,几乎不会有人真的在终端 IPython 中绘图,我们总是会写成脚本再执行。如果读者阅读过 Matplotlib 的琳琅满目的各种教学资料,会发现其中往往都在用 Jupyter Notebook。

不过,即便是在 Jupyter Notebook 中,Qt 后端亦有用处:我们可以在弹出的 Qt GUI 中很方便地放大查看某处细节,拖动查看其它局部,修改布局、线形、标题、轴等等要素,并导出为矢量图或格栅图。


2.3.2.2. 使用 VSCode 的 Jupyter 扩展(推荐)

在 VSCode 中安装 Jupyter 扩展,之后我们新建一个 .ipynb 文件(Jupyter Notebook 文件),就可以在其中获得近似真正 Jupyter Notebook 的体验。可参看下图例子。


2.3.2.3. 使用 Jupyter Lab 和/或 Jupyter Notebook(推荐)

只需按 2.4. 节 介绍的方法,使用 Jupyter Lab 和/或 Jupyter Notebook 即可。


2.3.3. 设置不同后端

2.4. Jupyter Lab, Jupyter Notebook

3. \(\TeX\) Live

4. GROMACS

posted @ 2026-02-15 12:22  acahsteven  阅读(1)  评论(0)    收藏  举报