使用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 版本号,即配置成功。

  1. 运行第一个 python 程序

4.代码调试方法

4.1 简单的调试

它适用于不需要在命令行传递参数的情况
方式一:

方式二:

方式三:

注意: 当VS code第一次进行调试时,会要求用户选择调试器,如下图所示

示例:

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

python 复制代码
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文件,如下所示:

这里可以解释一下该文件中一些重要参数的含义

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}"
            ]
        }
    ]
}

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

python 复制代码
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文件内容如下:

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语句
python 复制代码
# 导入 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里面,加上下面的内容
json 复制代码
{
    "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. 调试结束之后,别忘记把代码里面的 添加的代码注销掉

示例:

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

    python 复制代码
    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语句,添加后的结果如下所示:

    python 复制代码
    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里面,加上下面的内容

    json 复制代码
    {
        "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等扩展工具

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


  1. 选择Python解释器

方法和第3节的相同,

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

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

然后在弹出的列表中,选择你使用Anaconda所创建的虚拟环境(例如 pytorch)

如果没有看到虚拟环境,点击 Enter interpreter path 并浏览到 Anaconda 环境中的 Python 可执行文件路径

具体过程可以参考第3节

相关推荐
Channing Lewis21 分钟前
python生成随机字符串
服务器·开发语言·python
九品神元师28 分钟前
jupyter配置说明
linux·ide·jupyter
资深设备全生命周期管理1 小时前
以Python 做服务器,N Robot 做客户端,小小UI,拿捏
服务器·python·ui
洪小帅1 小时前
Django 的 `Meta` 类和外键的使用
数据库·python·django·sqlite
夏沫mds1 小时前
web3py+flask+ganache的智能合约教育平台
python·flask·web3·智能合约
去往火星1 小时前
opencv在图片上添加中文汉字(c++以及python)
开发语言·c++·python
Bran_Liu1 小时前
【LeetCode 刷题】栈与队列-队列的应用
数据结构·python·算法·leetcode
懒大王爱吃狼3 小时前
Python绘制数据地图-MovingPandas
开发语言·python·信息可视化·python基础·python学习
数据小小爬虫3 小时前
如何使用Python爬虫按关键字搜索AliExpress商品:代码示例与实践指南
开发语言·爬虫·python
martian6653 小时前
第17篇:python进阶:详解数据分析与处理
开发语言·python