VS Code 远程连接服务器:Anaconda 环境与 Python/Jupyter 运行全指南。研0大模型学习(第六、第七天)

VS Code 远程连接服务器:Anaconda 环境与 Python/Jupyter 运行全指南

在使用 VS Code 通过 SSH 远程连接到服务器进行开发时,尤其是在进行深度学习等需要特定环境的工作时,正确配置和使用 Anaconda 环境以及理解不同的代码运行方式非常关键。本文将梳理在 VS Code 远程连接环境下,如何管理 Anaconda 环境并运行 Python 代码(包括 .py 文件和 .ipynb 文件)。

我的环境 setup

  • 本地: Visual Studio Code
  • 远程服务器: 通过 VS Code Remote-SSH 连接
  • 服务器软件: 安装了 Anaconda
  • Anaconda 环境: 创建了名为 pytorch_env 的虚拟环境,用于深度学习。
  • VS Code 插件:远程服务器上安装了 VS Code 的 Python 插件和 Jupyter 相关插件。

Anaconda 环境与 Jupyter

远程服务器上安装 Anaconda 后,默认的 base 环境通常会直接包含 Jupyter Notebook 和 JupyterLab。但是,我们自己创建的虚拟环境(例如 pytorch_env)默认是“干净”的,不包含 Jupyter 相关组件。

为了在特定的虚拟环境(如 pytorch_env)中使用 Jupyter 的功能(包括在 VS Code 中运行 .ipynb 文件或使用交互式窗口),我们需要在这个环境中安装必要的库。

核心需求:在 pytorch_env 环境下使用 Jupyter 内核

步骤如下:

  1. 激活 pytorch_env 环境:
    打开 VS Code 的集成终端(确保它连接的是你的远程服务器),然后执行:

    conda activate pytorch_env
    
  2. 在该环境下安装 ipykernel
    ipykernel 是连接 Jupyter 和 Python 环境的关键库。在已经激活 pytorch_env 的终端中执行:

    pip install ipykernel
    
  3. 设置该环境为 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 notebookjupyter 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
  • 模式: 这是最传统、标准的 Python 脚本执行模式。
  • 过程:
    1. 你打开一个终端(可以是 VS Code 的集成终端,也可以是直接通过 SSH 连接的终端)。
    2. 激活你的目标环境(例如:conda activate pytorch_env)。
    3. 输入命令 python your_script_name.py 来运行整个 .py 文件。
  • 执行: 代码会从 .py 文件的第一行开始,一直执行到最后,是一次性的、线性的过程。
  • 输出: 所有通过 print() 打印的内容会显示在终端窗口中。
  • 交互性: 非常低。代码执行过程中你通常无法方便地暂停、查看中间变量的值或分步执行。
  • 工作目录: 通常是你执行 python 命令时,终端所在的那个目录。这是导致相对文件路径问题的一个常见原因。
  • 与 Jupyter 的关系: 这不是在 Jupyter 上运行。 这仅仅是使用指定的 Python 解释器来执行一个普通的 Python 脚本。
2. 在交互式窗口中运行(配合 .py 文件使用)
  • 模式: 这是 VS Code 提供的一种类似 Jupyter Notebook 的交互式代码执行模式,但你的代码仍然保存在标准的 .py 文件中。
  • 过程:
    1. 你打开一个 .py 文件。
    2. 可以在文件中使用 # %% 等标记将代码划分为不同的块(被称为“代码 cell”)。
    3. 点击代码块旁边的“运行 cell”按钮。
    4. VS Code 会自动启动或连接到一个独立的“Python 交互式”窗口。
  • 执行: 你可以灵活地选择文件中的某一个或某几个代码块进行执行。代码的执行状态(如定义的变量、函数定义等)会在整个交互式窗口的会话期间保持。
  • 输出: print 的内容、代码的返回值、甚至 Matplotlib 绘制的图表会直接显示在交互式窗口中,通常是代码块的下方,而不是在终端。
  • 交互性: 很高。非常适合在开发过程中进行探索、测试、调试和查看中间结果。
  • 工作目录: 通常默认为 .py 文件所在的目录(但这有时可以在 VS Code 设置中进行配置)。这是导致相对路径问题在终端和交互式窗口表现不同的原因之一。
  • 与 Jupyter 的关系: 底层使用了 Jupyter 的技术,特别是 Jupyter 内核。 VS Code 在后台启动一个 Jupyter 内核(基于你选择的 Python 环境)来管理和执行交互式窗口中的代码。你可以认为它是在 VS Code 这个界面下,由 .py 文件内容驱动的一种“Jupyter 体验”。
3. 在 Jupyter Notebook(.ipynb)中运行
  • 模式: 这是 Jupyter 平台最经典的原生交互式文档模式。文件本身(.ipynb)就包含了代码、代码输出、以及使用 Markdown 编写的文本和说明。
  • 过程:
    1. 你打开一个 .ipynb 文件。
    2. VS Code 会以 Notebook 界面打开它。
    3. 你需要选择一个 Jupyter 内核(也就是一个安装了 ipykernel 的 Python 环境)来运行这个 Notebook。
  • 执行: 代码被组织在不同的 cell 中,你可以逐个运行 cell。代码的执行状态在整个 Notebook 会话期间保持。
  • 输出: 代码输出、图表、甚至 HTML 等富文本内容会直接显示在对应的代码 cell 下方,并会与 Notebook 文件内容一起保存。
  • 交互性: 非常高。是专为交互式探索、数据分析和结合代码与文档进行演示而设计的。
  • 工作目录: 通常是 .ipynb 文件所在的目录。
  • 与 Jupyter 的关系: 这就是在 Jupyter 上运行。 VS Code 在这里充当了 Jupyter 的一个功能强大的客户端界面。

因此在终端上运行Python文件和在交互式窗口运行Python文件时他们的工作目录不同,因此使用相对路径无法同时在这两个模式下运行。要运行的话得改成绝对路径

解决终端环境显示异常 (pytorch_env) (base)

你提到在终端中看到了类似 (pytorch_env) (base) 这样的提示,这表明可能出现了环境嵌套或环境变量混淆的情况。这不是正常现象,通常终端提示符应该只显示一个当前激活的环境名称(例如 (pytorch_env)(base))。

让我们来修复这个问题:

  1. 退出所有 Conda 环境:
    连续执行 conda deactivate 命令,直到终端提示符不再显示任何环境名称为止。通常执行两次 conda deactivate 就够了,因为 conda deactivate 只退出最内层的环境。

    conda deactivate
    conda deactivate
    

    (根据实际情况可能需要执行更多次)

  2. 重新激活你想要使用的环境:
    例如,重新激活 pytorch_env

    conda activate pytorch_env
    

    此时,终端提示符应该只显示 (pytorch_env)

如果这个问题经常发生,可能是你的 shell 配置文件(如 ~/.bashrc, ~/.zshrc 等)中有重复的环境激活或 Conda 初始化设置。可以检查这些文件,确保 conda init 只被执行一次,并且没有其他代码会导致环境意外激活。

知识点总结

  • 远程服务器中安装 Anaconda 后,默认的 base 环境通常会直接包含了 jupyter notebookjupyter labipykernel 等库。
  • 你自己使用 conda create 创建的新环境默认是最小化的,不自动包含 Jupyter 相关库(特别是 ipykernel)。
  • 要在自定义环境中利用 Jupyter 功能(Notebook 或交互式窗口),核心是确保该环境中安装了 ipykernel
  • VS Code 远程连接时,通过选择正确的 Python 环境(安装了 ipykernel 的环境),可以直接利用该环境作为 Jupyter 内核,无需手动启动完整的 Jupyter Server。

总结与选择

  • 在终端运行 .py 标准 Python 脚本执行 (不是 Jupyter)。适用于最终运行、自动化。
  • 在交互式窗口运行 .py 利用了 Jupyter 内核的能力,在 VS Code 中提供类似 Notebook 的交互体验,代码仍在 .py 文件中。适用于开发、调试。
  • 在 VS Code 中运行 .ipynb VS Code 提供了原生的 Jupyter Notebook 功能和界面,这就是在 Jupyter 上进行操作。适用于探索、文档、结合代码与输出。

你可以根据当前所处的开发阶段和需求,选择最适合的运行方式。在 VS Code 中进行深度学习开发,通常建议优先使用 .ipynb 文件或 .py 文件配合交互式窗口,以利用其强大的交互和可视化能力。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字节头条golang二面

docker和云服务的区别 首先明确Docker的核心功能是容器化,它通过容器技术将应用程序及其依赖项打包在一起,确保应用在不同环境中能够一致地运行。而云服务则是由第三方提供商通过互联网提供的计算资源,例如计算能力、存储、数据库等。云服务…

数据结构和算法(七)--树

一、树 树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、单位的组织架构、等等。 树是由n(n>1)个有限结点组成一个具有层次关系的集合。把它叫做"树"是因为它看起来像一…

状态管理最佳实践:Provider使用技巧与源码分析

状态管理最佳实践:Provider使用技巧与源码分析 前言 Provider是Flutter官方推荐的状态管理解决方案,它简单易用且功能强大。本文将从实战角度深入讲解Provider的使用技巧和源码实现原理,帮助你更好地在项目中应用Provider进行状态管理。 基…

使用 NEAT 进化智能体解决 Gymnasium 强化学习环境

使用 NEAT 进化智能体解决 Gymnasium 强化学习环境 0. 前言1. 环境定义2. 配置 NEAT3. 解决强化学习问题小结系列链接0. 前言 在本节中,我们使用 NEAT 解决经典强化学习 (reinforcement learning, RL) Gym 问题。但需要注意的是,我们用于推导网络和解决方程的方法不是 RL,而…

Pandas高级功能

在数据科学与机器学习的广阔天地中,Pandas宛如一把瑞士军刀,以其强大的数据处理和分析能力,成为众多数据从业者的得力助手。从基础的数据读写、清洗到复杂的数据聚合、转换,Pandas的功能丰富多样。本文将深入探索Pandas的一些高级…

英语学习4.15

amateur amateur 🔤 读音:/ˈmətər/ 或 /ˈmətʃʊr/ ✅ 词性:名词 / 形容词 ✅ 中文释义: (名词)业余爱好者   👉 指不是以此为职业的人,通常出于兴趣而从事某项活动。   …

Java开发软件

Main.java // 主类,用于测试学生管理系统 public class Main { public static void main(String[] args) { StudentManagementSystem sms new StudentManagementSystem(); // 添加学生 sms.addStudent(new Student(1, "Alice", 20)…

多Agent框架及协作机制详解

文章目录 一、多智能体系统介绍1.1 多智能体系统定义1.2 多智能体协作1.3 协作类型1.4 协作策略1.5 通信结构1.6 协调与编排 1.3 多智能体与单智能体对比1.4 应用场景 二、多Agent开发框架AutoGenMetaGPTLangGraphSwarmCrewAI 三、多智能体协作方式3.1 MetaGPT:SOP驱…

AI Agent破局:智能化与生态系统标准化的颠覆性融合!

Hi!好久不见 云边有个稻草人-个人主页 热门文章_云边有个稻草人的博客-本篇文章所属专栏~ 目录 一、引言 二、AI Agent的基本概念 2.1 定义与分类 2.2 AI Agent的工作原理 2.3 示例代码:AI Agent的基本实现 三、AI Agent在企业数字化转型中的应用 …

在阿里云和树莓派上编写一个守护进程程序

目录 一、阿里云邮件守护进程 1. 安装必要库 2. 创建邮件发送脚本 mail_daemon.py 3. 设置后台运行 二、树莓派串口守护进程 1. 启用树莓派串口 2. 安装依赖库 3. 创建串口输出脚本 serial_daemon.py 4. 设置开机自启 5. 使用串口助手接收 一、阿里云邮件守护进程 1.…

Python----深度学习(全连接与链式求导法则)

一、机器学习和深度学习的区别 机器学习:利用计算机、概率论、统计学等知识,输入数据,让计算机学会新知 识。机器学习的过程,就是训练数据去优化目标函数。 深度学习:是一种特殊的机器学习,具有强大的能力和…

Python爬虫实战:获取网易新闻数据

一、引言 随着互联网的飞速发展,网络上蕴含着海量的信息资源。新闻数据作为其中的重要组成部分,对于舆情分析、市场研究、信息传播等多个领域具有重要价值。网易新闻作为国内知名的新闻平台,拥有丰富多样的新闻内容。使用 Python 的 Scrapy 框架进行网易新闻数据的爬取,可…

matlab论文图一的地形区域图的球形展示Version_1

matlab论文图一的地形区域图的球形展示Version_1 图片 此图来源于: ![Jieqiong Zhou, Ziyin Wu, Dineng Zhao, Weibing Guan, Chao Zhu, Burg Flemming, Giant sand waves on the Taiwan Banks, southern Taiwan Strait: Distribution, morphometric relationship…

蓝桥杯:连连看

本题大意要我们在一个给定的nxm的矩形数组中找出符合条件的格子 条件如下: 1.数值相同 2.两个横坐标和纵坐标的差值相等(由此可得是一个对角线上的格子) 那么根据以上条件我们可以用HashMap来解决这个问题,统计对角线上数值相同…

PHP中的ReflectionClass讲解【详细版】

快餐: ReflectionClass精简版 在PHP中,ReflectionClass是一个功能强大的反射类,它就像是一个类的“X光透视镜”,能让我们在程序运行时深入了解类的内部结构和各种细节。 一、反射类的基本概念和重要性 反射是指在程序运行期间获…

微信小程序中,将搜索组件获取的值传递给父页面(如 index 页面)可以通过 自定义事件 或 页面引用 实现

将搜索组件获取的值传递给父页面(如 index 页面)可以通过 自定义事件 或 页面引用 实现 方法 1:自定义事件(推荐) 步骤 1:搜索组件内触发事件 在搜索组件的 JS 中,当获取到搜索值时&#xff0c…

Django 实现服务器主动给客户端发送消息的几种常见方式及其区别

Django Channels 原理 :Django Channels 是 Django 的一个扩展,它通过使用 WebSockets 等协议来处理长连接,使服务器能够与客户端建立持久连接,从而实现双向通信。一旦连接建立,服务器可以随时主动向客户端发送消息。…

PHP最新好看UI个人引导页网页源码

PHP最新好看UI个人引导页网页源码 采用PHP、HTML、CSS及JavaScript等前端技术,构建了一个既美观又实用的个人主页解决方案。 源码设计初衷在于提供一个高度可定制、跨平台兼容的模板,让用户无需深厚的编程基础,即可快速搭建出专业且富有创意的…

HarmonyOS学习 实验九:@State和@Prop装饰器的使用方法

HarmonyOS应用开发:父子组件状态管理实验报告 引言 在HarmonyOS应用开发领域,组件之间的状态管理是一个至关重要的概念。通过有效的状态管理,我们可以确保应用的数据流动清晰、可预测,从而提升应用的稳定性和可维护性。本次实验…

12.第二阶段x64游戏实战-远程调试

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:11.第二阶段x64游戏实战-框架代码细节优化 本次写的内容是关于调试、排错相关的…