使用vscode在本地和远程服务器端运行和调试Python程序的方法总结

1 官网下载

下载网址:https://code.visualstudio.com/Download

如下图所示,可以分别下载Windows,Linux,macOS版本
在这里插入图片描述
历史版本下载链接: https://code.visualstudio.com/updates载链接: https://code.visualstudio.com/updates

2 安装Python扩展工具

打开 VS Code,安装 Microsoft 提供的官方 Python 扩展工具:

  1. 打开 VS Code

  2. 点击左侧活动栏中的扩展图标(四个小方块的图标)
    在这里插入图片描述

  3. 在搜索栏中输入 Python和Python Debugger

  4. 找到由 Microsoft 提供的 Python 扩展工具和Python Debugger扩展工具,并分别点击 Install 进行安装在这里插入图片描述
    等待安装结束,如下:
    在这里插入图片描述

3 配置 vscode 使用 Anaconda 环境

  1. 打开 vscode,并打开你要开发的工作区或文件夹,比如E盘train_code中的一个 python 文件夹
    在这里插入图片描述

  2. 按快捷键 Ctrl+Shift+P 打开命令面板,输入并选择 Python: Select Interpreter

    打开命令面板也可以通过在搜索框输入符号>进行打开

  3. 在弹出的列表中,选择你使用Anaconda所创建的虚拟环境(例如 pytorch)
    在这里插入图片描述

注意:

如果没有看到虚拟环境,点击 Enter interpreter path 并浏览到 Anaconda 环境中的 Python 可执行文件路径,本例中虚拟环境所在路径为C:\others\my_software\anaconda\envs\pytorchpython.exe

查看虚拟环境路径也可以通过命令conda env list进行查看
在这里插入图片描述

点击 Enter interpreter path 并浏览到 Anaconda 环境中的 Python 可执行文件路径:
在这里插入图片描述
点击"Find",然后找到 Python 可执行文件,点击"Select Interpreter"即可
在这里插入图片描述

  1. 验证环境配置

在 VS Code 中打开一个新的终端窗口,输入 python 版本检查命令:

python --version

确保终端使用的是你选择的 Anaconda 环境:

正确显示虚拟环境对应的 Python 版本号,即配置成功。

在这里插入图片描述
5. 运行第一个 python 程序
在这里插入图片描述

4.代码调试方法

4.1 简单的调试

它适用于不需要在命令行传递参数的情况
方式一:
在这里插入图片描述
方式二:

在这里插入图片描述

方式三:
在这里插入图片描述

注意: 当VS code第一次进行调试时,会要求用户选择调试器,如下图所示
在这里插入图片描述

在这里插入图片描述

示例:

假如需要调试的代码如下所示,使用方式一进行调试

def calculate_area(length, width):
    return length * width

def main(length=5, width=10,prints=True):
 
    # 计算矩形面积
    area = calculate_area(length, width)
    
    # 输出结果
    if prints:
        print(f"The area of the rectangle is: {area}")

if __name__ == "__main__":
    main()

在这里插入图片描述
在这里插入图片描述

4.2 使用launch.json进行调试

它适用于需要在命令行传递参数的情况:
步骤1,2,3如下图所示:
在这里插入图片描述
步骤4如下图所示:
在这里插入图片描述
执行完步骤4,会新建一个launch.json文件,如下所示:
在这里插入图片描述
这里可以解释一下该文件中一些重要参数的含义

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
    
        {
            "name": "Python Debugger: Current File with Arguments",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",//指定当前正在运行的文件,它的默认值为"${file}",表示当前所运行的文件为鼠标所选中的文件,你也可以将其设置为指定位置的脚本文件,例如"${workspaceFolder}/your_script.py", 其中${workspaceFolder}表示当前工作空间的根目录
            "cwd":"${workspaceFolder}",//设置工作目录,它的默认值为"${workspaceFolder}",即当前工作空间的根目录,你也可以将其设置为"${fileDirname}",表示工作目录为当前打开文件所在目录,或者也可以自定义其他目录,例如"${workspaceFolder}/src"
            "console": "integratedTerminal",
            "args": [
                "${command:pickArgs}"
            ]
        }
    ]
}

假如此时需要调试的代码如下:

import argparse

def calculate_area(length, width):
    return length * width

def main():
    # 创建 ArgumentParser 对象
    parser = argparse.ArgumentParser(description="Calculate the area of a rectangle.")
    
    # 添加命令行参数,使用 -- 来指定可选参数
    parser.add_argument('--length', type=float, required=True, help="Length of the rectangle")
    parser.add_argument('--width', type=float, required=True, help="Width of the rectangle")
    parser.add_argument('--print', action='store_true', help="print the Area of the rectangle")
    
    # 解析命令行参数
    args = parser.parse_args()
    
    # 计算矩形面积
    area = calculate_area(args.length, args.width)
    
    # 输出结果
    if args.print:
        print(f"The area of the rectangle is: {area}")

if __name__ == "__main__":
    main()

launch.json文件内容如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Python Debugger: Current File with Arguments",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "args": [
               "--length","10","--width","5","--print"
            ]
        }
    ]
}

此时我们可以先打断点然后进行调试:

注意:此时1.py为鼠标所选中的文件,所以1.py为当前正在运行(调试)的文件,所以launch.json中"program": "${file}"所指的文件就是1.py

在这里插入图片描述
调试结果如下:
在这里插入图片描述
在这里插入图片描述

4.3 使用debugpy方式

它适用于需要在命令行传递参数的情况,当需要传递的参数非常多时,使用该方式要比使用launch.json方法要简单很多

1. 安装包

pip install debugpy -U

2. 写配置

  • 在需要调试的代码中的最前面加上下面的try语句
# 导入 debugpy 库,debugpy 是一个用于在 Python 中进行调试的库,通常与 Visual Studio Code 配合使用
import debugpy
try:
    # 调用 debugpy 的 listen 方法,使调试器开始监听指定的主机和端口。在这里,监听的主机是 'localhost',端口是 9501。默认情况下,VS Code 调试配置会使用 5678 端口,但这里使用了 9501。
    debugpy.listen(("localhost", 9501))
     # 输出信息,提示用户调试器正在等待附加连接
    print("Waiting for debugger attach")
    # 等待调试器(例如 VS Code)连接到当前 Python 进程。程序会在这一行暂停,直到调试器附加进来。
    debugpy.wait_for_client()
# 捕获所有异常,若有异常发生,进入 except 块
except Exception as e:
    # 如果发生异常,则什么也不做,直接跳过
    pass
  • 在vscode的launch.json的configuration里面,加上下面的内容
{
    "name": "file_debug",
    "type": "debugpy",
    "request": "attach",
    "connect": {
        "host": "localhost",
        "port": 9501
    }
},

注意:

这里的"name"的值可以自定义,本例设为file_debug

这里的"host"和"port"的值要与前面的try语句中的值保持一致。

3. 启动

  1. 找到需要调试的python文件,然后打上断点。
  2. 正常运行代码,此时终端打印出Waiting for debugger attach`。
  3. 在vscode的调试页面,选择file_debug进行调试。
  4. 调试结束之后,别忘记把代码里面的 添加的代码注销掉

示例:

  • 假如此时需要调试的代码如下:

    import argparse
    
    def calculate_area(length, width):
        return length * width
    
    def main():
        # 创建 ArgumentParser 对象
        parser = argparse.ArgumentParser(description="Calculate the area of a rectangle.")
        
        # 添加命令行参数,使用 -- 来指定可选参数
        parser.add_argument('--length', type=float, required=True, help="Length of the rectangle")
        parser.add_argument('--width', type=float, required=True, help="Width of the rectangle")
        parser.add_argument('--print', action='store_true', help="print the Area of the rectangle")
        
        # 解析命令行参数
        args = parser.parse_args()
        
        # 计算矩形面积
        area = calculate_area(args.length, args.width)
        
        # 输出结果
        if args.print:
            print(f"The area of the rectangle is: {area}")
    
    if __name__ == "__main__":
        main()
    
    
  • 我们首先要在需要调试的代码前面加上前面所提到的try语句,添加后的结果如下所示:

    import argparse
    import debugpy
    # 导入 debugpy 库,debugpy 是一个用于在 Python 中进行调试的库,通常与 Visual Studio Code 配合使用
    import debugpy
    
    try:
        # 调用 debugpy 的 listen 方法,使调试器开始监听指定的主机和端口。在这里,监听的主机是 'localhost',端口是 9501。默认情况下,VS Code 调试配置会使用 5678 端口,但这里使用了 9501。
        debugpy.listen(("localhost", 9501))
         # 输出信息,提示用户调试器正在等待附加连接
        print("Waiting for debugger attach")
        # 等待调试器(例如 VS Code)连接到当前 Python 进程。程序会在这一行暂停,直到调试器附加进来。
        debugpy.wait_for_client()
    # 捕获所有异常,若有异常发生,进入 except 块
    except Exception as e:
        # 如果发生异常,则什么也不做,直接跳过
        pass
    
    
    def calculate_area(length, width):
        return length * width
    
    def main():
        # 创建 ArgumentParser 对象
        parser = argparse.ArgumentParser(description="Calculate the area of a rectangle.")
        
        # 添加命令行参数,使用 -- 来指定可选参数
        parser.add_argument('--length', type=float, required=True, help="Length of the rectangle")
        parser.add_argument('--width', type=float, required=True, help="Width of the rectangle")
        parser.add_argument('--print', action='store_true', help="print the Area of the rectangle")
        
        # 解析命令行参数
        args = parser.parse_args()
        
        # 计算矩形面积
        area = calculate_area(args.length, args.width)
        
        # 输出结果
        if args.print:
            print(f"The area of the rectangle is: {area}")
    
    if __name__ == "__main__":
        main()
    
    
  • 创建launch.json文件
    在这里插入图片描述
    在这里插入图片描述
    执行完步骤1,2,3,4后,会新建一个launch.json文件,如下所示:
    在这里插入图片描述

  • 在vscode的launch.json的configuration里面,加上下面的内容

    {
        "name": "file_debug",
        "type": "debugpy",
        "request": "attach",
        "connect": {
            "host": "localhost",
            "port": 9501
        }
    },
    
  • 添加后的效果如下所示:
    在这里插入图片描述

  • 打断点,并运行需要调试的代码,本例中需要运行的代码文件名为1.py,直接在终端输入运行的命令

    python 1.py --length 5 --width 10 --print
    

    在这里插入图片描述

  • 代码调试
    在这里插入图片描述

5 连接远程服务器

  1. vscode安装remote ssh插件
    在这里插入图片描述
    安装之后侧边栏会出现一个远程连接标识
    在这里插入图片描述

  2. 配置ssh连接信息
    在这里插入图片描述
    在这里插入图片描述

  3. 连接服务器
    在这里插入图片描述
    在这里插入图片描述

  4. 将远程服务器的文件目录同步在vscode界面
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. 将本地文件通过拖拽的方式上传到远程服务器
    在这里插入图片描述

  6. 将远程服务器文件下载到本地
    在这里插入图片描述

  7. 在远程服务器上安装Python和Python Debugger等扩展工具

注意:在本地已经安装的扩展工具并不能在远程服务器上使用,所以需要在远程服务器上再次安装相应的扩展工具,这样才可以在远程服务器上运行和调试代码

在这里插入图片描述
在这里插入图片描述
8. 选择Python解释器

方法和第3节的相同,

按快捷键 Ctrl+Shift+P 打开命令面板,输入并选择 Python: Select Interpreter

打开命令面板也可以通过在搜索框输入符号>进行打开

在这里插入图片描述
然后在弹出的列表中,选择你使用Anaconda所创建的虚拟环境(例如 pytorch)
在这里插入图片描述
如果没有看到虚拟环境,点击 Enter interpreter path 并浏览到 Anaconda 环境中的 Python 可执行文件路径

具体过程可以参考第3节

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

免费为企业IT规划WSUS:Windows Server 更新服务 (WSUS) 之快速入门教程(一)

哈喽大家好,欢迎来到虚拟化时代君(XNHCYL),收不到通知请将我点击星标!“ 大家好,我是虚拟化时代君,一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…

Ubuntu 24.04 LTS 安装 tailscale 并访问 SMB共享文件夹

Ubuntu 24.04 LTS 安装 tailscale 安装 Tailscale 官方仓库 首先,确保系统包列表是最新的: sudo apt update接下来,安装 Tailscale 所需的仓库和密钥: curl -fsSL https://tailscale.com/install.sh | sh这会自动下载并安装 …

基于python+Django+mysql鲜花水果销售商城网站系统设计与实现

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

“AI人工智能内容辅助创作平台:让创意不再“卡壳”

在如今这个信息爆炸的时代,内容创作成了每个人的“必修课”。无论是自媒体大V、文案策划,还是普通学生写作文,大家都会遇到一个让人抓狂的问题——“创意枯竭”。有时候,脑袋里空空如也,一个字都写不出来,那…

【计算机网络】传输层协议TCP与UDP

传输层 传输层位于OSI七层网络模型的第四层,主要负责端到端通信,可靠性保障(TCP),流量控制(TCP),拥塞控制(TCP),数据分段与分组,多路复用与解复用等,通过TCP与UDP协议实现…

基础入门-传输加密数据格式编码算法密文存储代码混淆逆向保护安全影响

知识点: 1、传输格式&传输数据-类型&编码&算法 2、密码存储&代码混淆-不可逆&非对称性 一、演示案例-传输格式&传输数据-类型&编码&算法 传输格式 JSON XML WebSockets HTML 二进制 自定义 WebSockets:聊天交互较常…

DenseNet-密集连接卷积网络

DenseNet(Densely Connected Convolutional Network)是近年来图像识别领域中一种创新且高效的深度卷积神经网络架构。它通过引入密集连接的设计,极大地提高了特征传递效率,减缓了梯度消失问题,促进了特征重用&#xff…

记一次数据库连接 bug

整个的报错如下: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Metho…

Docker:基于自制openjdk8镜像 or 官方openjdk8镜像,制作tomcat镜像

一、制作openjdk8基础镜像【基于自定义alpine-3.18.0:v1 】 docker pull maven:3.5.0-jdk-8-alpine 78.56 MB https://hub.docker.com/_/maven/tagspage8&namealpine openjdk二进制下载地址 https://blog.csdn.net/fenglllle/article/details/124786948 https://adoptope…

vue 入门到实战 一

目录 第1章 初始Vue.js 1.1 网站交互方式 1.2 MVVM模式 1.3 Vue.js是什么 1.4 安装Vue.js 1.5 第一个Vue.js程序 1.6 插值与表达式 第1章 初始Vue.js 1.1 网站交互方式 Web网站有单页应用程序(SPA,Single-page Application)和多页应用…

【2024 年度总结】从小白慢慢成长

【2024 年度总结】从小白慢慢成长 1. 加入 CSDN 的契机2. 学习过程2.1 万事开头难2.2 下定决心开始学习2.3 融入技术圈2.4 完成万粉的目标 3. 经验分享3.1 工具的选择3.2 如何提升文章质量3.3 学会善用 AI 工具 4. 保持初心,继续前行 1. 加入 CSDN 的契机 首次接触…

Apache SeaTunnel 2.3.9 正式发布:多项新特性与优化全面提升数据集成能力

近日,Apache SeaTunnel 社区正式发布了最新版本 2.3.9。本次更新新增了Helm 集群部署、Transform 支持多表、Zeta新API、表结构转换、任务提交队列、分库分表合并、列转多行 等多个功能更新! 作为一款开源、分布式的数据集成平台,本次版本通过…

mybatis的多对一、一对多的用法

目录 1、使用VO聚合对象(可以解决这两种情况) 多对一: 一对多: 2、非聚合的多对一做法: 3、非聚合的一对多做法: 1、使用VO聚合对象(可以解决这两种情况) 当我需要多对一、一对…

SpringCloud系列教程:微服务的未来(十四)网关登录校验、自定义过滤器GlobalFilter、GatawayFilter

前言 在微服务架构中,API 网关扮演着至关重要的角色,负责路由请求、执行安全验证、流量控制等任务。Spring Cloud Gateway 作为一个强大的网关解决方案,提供了灵活的方式来实现这些功能。 本篇博客将重点介绍如何在 Spring Cloud Gateway 中…

服务化架构 IM 系统之应用 MQ

在微服务化系统中,存在三个最核心的组件,分别是 RPC、注册中心和MQ。 在前面的两篇文章(见《服务化架构 IM 系统之应用 RPC》和《服务化架构 IM 系统之应用注册中心》)中,我们站在应用的视角分析了普适性的 RPC 和 注…

Linux-C/C++--深入探究文件 I/O (上)(文件的管理、函数返回错误、exit()、_Exit()、_exit())

经过上一章内容的学习,相信各位读者对 Linux 系统应用编程中的基础文件 I/O 操作有了一定的认识和理解了,能够独立完成一些简单地文件 I/O 编程问题,如果你的工作中仅仅只是涉及到一些简单文件读写操作相关的问题,其实上一章的知识…

内网渗透测试工具及渗透测试安全审计方法总结

1. 内网安全检查/渗透介绍 1.1 攻击思路 有2种思路: 攻击外网服务器,获取外网服务器的权限,接着利用入侵成功的外网服务器作为跳板,攻击内网其他服务器,最后获得敏感数据,并将数据传递到攻击者&#xff0…

豆包MarsCode:小C点菜问题

问题描述 思路分析 这道题的核心任务是找出所有不超过给定价格 m 的菜肴中,最常见的菜肴价格,最后返回该价格的出现次数。 1. 题意理解: 给定一个最大价格 m,小C只会选择价格不超过 m 的菜。菜单上有 n 道菜,每道菜…

从Windows通过XRDP远程访问和控制银河麒麟ukey v10服务器,以及多次连接后黑屏的问题

从Windows通过XRDP远程访问和控制银河麒麟ukey v10服务器,以及多次连接后黑屏的问题。 安装 rdp 服务: yum install -y epel-release yum install -y xrdp或者如下: 可以通过下载rpm软件包,然后rpm方式安装。访问xrdp官网https…

【PowerQuery专栏】实现JSON数据的导入

Json 格式数据是在互联网数据格式传输使用的非常频繁的一类数据,图7.44为Json数据格式中比较典型的数据格式。 PowerQuery进行Json数据解析使用的是Json.Document进行数据解析,Json.Document目前有2个参数。 参数1为内容数据,数据类型为二进制类型,值为需要解析的Json数据参…