VS Code远程连接服务器:Anaconda环境与Python/Jupyter运行指南——研0大模型学习进阶教程(实战第六、七天)
VS Code 远程连接服务器:Anaconda 环境与 Python/Jupyter 运行全指南
在使用 VS Code 通过 SSH 远程连接到服务器进行开发时,尤其是在进行深度学习等需要特定环境的工作时,正确配置和使用 Anaconda 环境以及理解不同的代码运行方式非常关键。本文将梳理在 VS Code 远程连接环境下,如何管理 Anaconda 环境并运行 Python 代码(包括 .py 文件和 .ipynb 文件)。
我的环境 setup
pytorch_env 的虚拟环境,用于深度学习。Anaconda 环境与 Jupyter
远程服务器上安装 Anaconda 后,默认的 base 环境通常会直接包含 Jupyter Notebook 和 JupyterLab。但是,我们自己创建的虚拟环境(例如 pytorch_env)默认是“干净”的,不包含 Jupyter 相关组件。
为了在特定的虚拟环境(如 pytorch_env)中使用 Jupyter 的功能(包括在 VS Code 中运行 .ipynb 文件或使用交互式窗口),我们需要在这个环境中安装必要的库。
核心需求:在 pytorch_env 环境下使用 Jupyter 内核
步骤如下:
-
激活
pytorch_env环境:
打开 VS Code 的集成终端(确保它连接的是你的远程服务器),然后执行:conda activate pytorch_env -
在该环境下安装
ipykernel:
ipykernel是连接 Jupyter 和 Python 环境的关键库。在已经激活pytorch_env的终端中执行:pip install ipykernel -
设置该环境为 Jupyter 内核(可选但推荐):
安装ipykernel通常会自动注册内核,但手动执行可以确保 VS Code 和 Jupyter 能够识别这个环境。在激活pytorch_env的终端中执行:python -m ipykernel install --user --name=pytorch_env --display-name="PyTorch Env (pytorch_env)"这里的
--display-name是你在 VS Code 的内核列表中看到的环境名称,可以根据喜好设置。
完成以上步骤后,你的 pytorch_env 环境就已经具备了作为 Jupyter 内核的能力。
在 VS Code 中选择 Jupyter 内核
现在,当你新建或打开一个 .ipynb 文件时,VS Code 会提示你选择一个内核。
选择内核时,你会看到类似这样的选项:
正确的选择是点击 “Python 环境…”。
点击后,VS Code 会列出它在远程服务器上检测到的所有 Python 环境(包括 base 和你创建的 pytorch_env)。你应该在列表中找到并选择你的 pytorch_env。
这样做的好处是,你不需要手动在服务器上运行 jupyter notebook 或 jupyter lab 命令来启动一个完整的 Jupyter Server。VS Code 会利用你选择的具备 ipykernel 的 Python 环境,在后台为你处理启动和管理 Jupyter 内核的底层细节。
不要选择“现有 Jupyter 服务器…”,那个选项用于连接一个已经在服务器上独立运行起来的 Jupyter Server 实例,通常需要你手动启动该服务器并提供 URL 和 Token。
选择好 pytorch_env 内核后,你就可以在 .ipynb 文件中编写和运行代码了。
理解不同的 Python 代码运行方式
除了在 .ipynb 文件中运行,VS Code 还提供了其他运行 Python 代码的方式。理解它们的区别,特别是它们与 Jupyter 的关系,有助于选择最适合当前任务的方式。
首先明确一点:无论采用哪种方式,你的代码最终都是由服务器上的 Python 解释器(特别是来自你指定的 Conda 环境,如 pytorch_env)来执行的。区别在于运行时的界面、执行模式和工作目录。
1. 在终端上运行 Python 文件(.py)
- 你打开一个终端(可以是 VS Code 的集成终端,也可以是直接通过 SSH 连接的终端)。
- 激活你的目标环境(例如:
conda activate pytorch_env)。 - 输入命令
python your_script_name.py来运行整个.py文件。
.py 文件的第一行开始,一直执行到最后,是一次性的、线性的过程。print() 打印的内容会显示在终端窗口中。python 命令时,终端所在的那个目录。这是导致相对文件路径问题的一个常见原因。2. 在交互式窗口中运行(配合 .py 文件使用)
.py 文件中。- 你打开一个
.py文件。 - 可以在文件中使用
# %%等标记将代码划分为不同的块(被称为“代码 cell”)。 - 点击代码块旁边的“运行 cell”按钮。
- VS Code 会自动启动或连接到一个独立的“Python 交互式”窗口。
print 的内容、代码的返回值、甚至 Matplotlib 绘制的图表会直接显示在交互式窗口中,通常是代码块的下方,而不是在终端。.py 文件所在的目录(但这有时可以在 VS Code 设置中进行配置)。这是导致相对路径问题在终端和交互式窗口表现不同的原因之一。.py 文件内容驱动的一种“Jupyter 体验”。3. 在 Jupyter Notebook(.ipynb)中运行
.ipynb)就包含了代码、代码输出、以及使用 Markdown 编写的文本和说明。- 你打开一个
.ipynb文件。 - VS Code 会以 Notebook 界面打开它。
- 你需要选择一个 Jupyter 内核(也就是一个安装了
ipykernel的 Python 环境)来运行这个 Notebook。
.ipynb 文件所在的目录。因此在终端上运行Python文件和在交互式窗口运行Python文件时他们的工作目录不同,因此使用相对路径无法同时在这两个模式下运行。要运行的话得改成绝对路径
解决终端环境显示异常 (pytorch_env) (base)
你提到在终端中看到了类似 (pytorch_env) (base) 这样的提示,这表明可能出现了环境嵌套或环境变量混淆的情况。这不是正常现象,通常终端提示符应该只显示一个当前激活的环境名称(例如 (pytorch_env) 或 (base))。
让我们来修复这个问题:
-
退出所有 Conda 环境:
连续执行conda deactivate命令,直到终端提示符不再显示任何环境名称为止。通常执行两次conda deactivate就够了,因为conda deactivate只退出最内层的环境。conda deactivate conda deactivate(根据实际情况可能需要执行更多次)
-
重新激活你想要使用的环境:
例如,重新激活pytorch_env:conda activate pytorch_env此时,终端提示符应该只显示
(pytorch_env)。
如果这个问题经常发生,可能是你的 shell 配置文件(如 ~/.bashrc, ~/.zshrc 等)中有重复的环境激活或 Conda 初始化设置。可以检查这些文件,确保 conda init 只被执行一次,并且没有其他代码会导致环境意外激活。
知识点总结
base 环境通常会直接包含了 jupyter notebook、jupyter lab 和 ipykernel 等库。conda create 创建的新环境默认是最小化的,不自动包含 Jupyter 相关库(特别是 ipykernel)。ipykernel。ipykernel 的环境),可以直接利用该环境作为 Jupyter 内核,无需手动启动完整的 Jupyter Server。总结与选择
.py: 标准 Python 脚本执行 (不是 Jupyter)。适用于最终运行、自动化。.py: 利用了 Jupyter 内核的能力,在 VS Code 中提供类似 Notebook 的交互体验,代码仍在 .py 文件中。适用于开发、调试。.ipynb: VS Code 提供了原生的 Jupyter Notebook 功能和界面,这就是在 Jupyter 上进行操作。适用于探索、文档、结合代码与输出。你可以根据当前所处的开发阶段和需求,选择最适合的运行方式。在 VS Code 中进行深度学习开发,通常建议优先使用 .ipynb 文件或 .py 文件配合交互式窗口,以利用其强大的交互和可视化能力。
作者:cocogogogo