书生大模型实战营闯关 - 入门岛 - Python

学习目标:

  • 在书生大模型提供的环境下, 完成Python代码的编写与调试

学习内容:

4.2 使用本地Vscode连接InternStudio开发机

首先需要安装Remote-SSH插件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

安装完成后进入Remote Explorer,在ssh目录下新建一个ssh链接

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

此时会有弹窗提示输入ssh链接命令,回车后还会让我们选择要更新那个ssh配置文件,默认就选择第一个就行(如果你有其他需要的话也可以新建一个ssh配置文件)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

开发机的链接命令可以在开发机控制台对应开发机"SSH连接"找到,复制登录命令到vscode的弹窗中然后回车,vscode就会开始链接InternStudio的服务器,记得此时切回去复制一下ssh的密码,待会会用到。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在新的弹窗中将ssh密码粘贴进去然后回车。随后会弹窗让选择远程终端的类型,这边我们的开发机是linux系统,所以选择linux就好。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

首次连接会进行一些初始化的设置,可能会比较慢,还请耐心等待。后面打开文件夹的时候可能会再需要输入密码,可以一直开着开发机的控制台不要关掉以备不时之需。

看到左下角远程连接已经显示ssh连接地址SSH:ssh.intern-ai.org.cn,说明我们已经连接成功了。然后我们就可以像在本地使用vscode一样愉快的使用vscode在开发机上进行任何操作了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

连接成功后我们打开远程连接的vscode的extensions,在远程开发机上安装好python的插件,后面python debug会用到。也可以一键把我们本地vscode的插件安装到开发机上。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Host internlm1
	 HostName ssh.intern-ai.org.cn
	 User root
	 Port 48438
     AddKeysToAgent yes
	 IdentityFile "SomewhereOnMyMachine/key"
     ServerAliveInterval=180
     ServerAliveCountMax=5

4.3 在Vscode中打开终端

单击vscode页面下方有一个X和!的位置可以快速打开vscode的控制台,然后进入TERMINAL。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

TIPS:右上方的+可以新建一个TERMINAL。

4.4 使用Vscode进行Python debug的流程

4.4.1 debug单个python文件

Step1.打开文件夹

在VSCode中打开直接打开root文件夹,或者你想要debug的Python文件所在的文件夹。这里可能会需要再次输入密码。下面我们以打开root文件夹为例。单击Open Folder或者左上角菜单File->Open Folder。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这边我们新建一个文件夹,写一个简单的python程序来做debug演示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

def add_numbers(a,b,c):
    sum = 0#这里其实覆盖了python自带的sum方法。
    sum +=a
    sum +=b
    sum +=c
    print("The sum is ",sum) 

if __name__ =='__main__':
    x,y,z = 1,2,3
    result = add_numbers(x,y,z)#图中代码这里写成1,2,3了
    print("The result of sum is ",result)

新建python文件后我们如果想要运行,首先需要选择解释器。单击右下角的select interpreter,vsconde会自动扫描开发机上所有的python环境中的解释器。这里我们只要选conda中的base就行了,后面各位如果要使用其他虚拟环境就在这选择对应的解释器就可以。

Step2.设置断点

在代码行号旁边点击,可以添加一个红点,这就是断点(如果不能添加红点需要检查一下python extension是否已经正确安装)。当代码运行到这里时,它会停下来,这样你就可以检查变量的值、执行步骤等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Step3.启动debug

点击VSCode侧边栏的“Run and Debug”(运行和调试),然后点击“Run and Debug”(开始调试)按钮,或者按F5键。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

单击后会需要选择debugger和debug配置文件,我们单独debug一个python文件只要选择Python File就行。然后你的代码会在达到第一个断点之前运行,在第一个断点处停下来。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Step4.查看变量

当代码在断点处停下来时,你可以查看和修改变量的值。在“Run and Debug”侧边栏的“Variables”(变量)部分,你可以看到当前作用域内的所有变量及其值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Step5.单步执行代码

你可以使用“Run and Debug”侧边栏顶部的按钮来单步执行代码。这样,你可以逐行运行代码,并查看每行代码执行后的效果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

debug面板各按钮功能介绍:

  • 1: continue: 继续运行到下一个断点

  • 2: step over:跳过,可以理解为运行当前行代码,不进入具体的函数或者方法。

  • 3: step into: 进入函数或者方法。如果当行代码存在函数或者方法时,进入代码该函数或者方法。如果当行代码没有函数或者方法,则等价于step over。

  • 4: step out:退出函数或者方法, 返回上一层。

  • 5: restart:重新启动debug

  • 6: stop:终止debug

Step6.修复错误并重新运行

如果你找到了代码中的错误,可以修复它,然后重新运行debug来确保问题已经被解决。

通过遵循以上步骤,你可以使用VSCode的debug功能来更容易地找到和修复你Python代码中的错误。可以自己编写一个简单的python脚本,并尝试使用debug来更好的理解代码的运行逻辑。记住,debug是编程中非常重要的一部分,所以不要怕花时间在这上面。随着时间的推移,你会变得越来越擅长它!

4.4.2 在vscode使用命令行进行debug

很多时候我们要debug的不止是一个简单的python文件,而是很多参数,参数中不止会有简单的值还可能有错综复杂的文件关系,甚至debug一整个项目。这种情况下,直接使用命令行来发起debug会是一个更好的选择。

4.4.2.1 vscode设置

vscode支持通过remote的方法连接我们在命令行中发起的debug server。首先我们要配置一下debug的config。

还是点击VSCode侧边栏的“Run and Debug”(运行和调试),单击"create a lauch.json file"

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

选择debugger时选择python debuger。选择debug config时选择remote attach就行,随后会让我们选择debug server的地址,因为我们是在本地debug,所以全都保持默认直接回车就可以了,也就是我们的server地址为localhost:5678。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

配置完以后会打开配置的json文件,但这不是重点,可以关掉。这时我们会看到run and debug界面有变化,出现了debug选项。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.4.2.2 debug命令行

现在vscode已经准备就绪,让我们来看看如何在命令行中发起debug。如果没有安装debugpy的话可以先通过pip install debugpy安装一下。

python -m debugpy --listen 5678 --wait-for-client ./myscript.py
  • ./myscript.py可以替换为我们想要debug的python文件,后面可以和直接在命令行中启动python一样跟上输入的参数。记得要先在想要debug的python文件打好断点并保存。

  • --wait-for-client参数会让我们的debug server在等客户端连入后才开始运行debug。在这就是要等到我们在run and debug界面启动debug。

先在终端中发起debug server,然后再去vscode debug页面单击一下绿色箭头开启debug。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来的操作就和上面一样了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4.4.2.3 使用别名简化命令

这边有个不方便的地方,python -m debugpy --listen 5678 --wait-for-client这个命令太长了,每次都打很麻烦。这里我们可以给这段常用的命令设置一个别名。

linux系统中,可以对 ~/.bashrc 文件中添加以下命令

alias pyd='python -m debugpy --wait-for-client --listen 5678'

然后执行

source ~/.bashrc

这样之后使用 pyd 命令(你可以自己命名) 替代 python 就能在命令行中起debug了,之前的debug命令就变成了

pyd ./myscript.py

学习时间:

提示:这里可以添加计划学习的时间

例如:

  • 周一至周五晚上 7 点—晚上9点
  • 周六上午 9 点-上午 11 点
  • 周日下午 3 点-下午 6 点

学习产出:

import string

text = """
Got this panda plush toy for my daughter's birthday,
who loves it and takes it everywhere. It's soft and
super cute, and its face has a friendly look. It's
a bit small for what I paid though. I think there
might be other options that are bigger for the
same price. It arrived a day earlier than expected,
so I got to play with it myself before I gave it
to her.
"""

def wordcount(input_string):
    # 去除标点符号
    input_string = input_string.translate(str.maketrans('', '', string.punctuation))

    # 将大写字母全部小写
    input_string = input_string.lower()

    # 字符串分割转化为列表
    words = input_string.split()

    # 新建空dict
    word_counts = {}

    # 扫描转化
    for word in words:
        # If the word is already in the dictionary, increment its count
        if word in word_counts:
            word_counts[word] += 1
        # Otherwise, add the word to the dictionary with a count of 1
        else:
            word_counts[word] = 1

    # 返回查明dict
    return word_counts


print(wordcount(text))
{'got': 2, 'this': 1, 'panda': 1, 'plush': 1, 'toy': 1, 'for': 3, 'my': 1, 'daughters': 1, 'birthday': 1, 'who': 1, 'loves': 1, 'it': 5, 'and': 3, 'takes': 1, 'everywhere': 1, 'its': 3, 'soft': 1, 'super': 1, 'cute': 1, 'face': 1, 'has': 1, 'a': 3, 'friendly': 1, 'look': 1, 'bit': 1, 'small': 1, 'what': 1, 'i': 4, 'paid': 1, 'though': 1, 'think': 1, 'there': 1, 'might': 1, 'be': 1, 'other': 1, 'options': 1, 'that': 1, 'are': 1, 'bigger': 1, 'the': 1, 'same': 1, 'price': 1, 'arrived': 1, 'day': 1, 'earlier': 1, 'than': 1, 'expected': 1, 'so': 1, 'to': 2, 'play': 1, 'with': 1, 'myself': 1, 'before': 1, 'gave': 1, 'her': 1}

在这里插入图片描述

提示:这里统计学习计划的总量

例如:

  • 技术笔记 2 遍
  • CSDN 技术博客 3 篇
  • 习的 vlog 视频 1 个
  • 19
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值