vscode的debug学习、python调用大模型api-L0G2

from:Ricky

Day2-python

任务1:Leetcode 383(笔记中提交代码与leetcode提交通过截图)

题目:

给你两个字符串:ransomNotemagazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。magazine 中的每个字符只能在 ransomNote 中使用一次。

如果可以,返回 true ;否则返回 false

通过

代码

任务2:Vscode连接InternStudio debug笔记

共享虚拟环境

将conda环境装到share制定目录里

有时我们会遇到想将整个虚拟环境保存到制定目录来共享,比如在局域网内,或者在InternStudio的团队开发机间共享。此时我们可以把conda的虚拟环境创建到指定目录下。

方法:

在创建环境时使用--prefix参数制定环境所在的文件夹

比如我们想在/root/envs/路径下创建刚刚我们创建过得myenv

conda create --prefix /root/envs/myenv python=3.9

激活共享的虚拟环境方法


conda create /root/envs/myenv

conda安装到指定目录

为了节省大家的存储空间,本次实战营可以直接使用share目录下的conda环境,但share目录只有读权限,所以要安装额外的包时我们不能直接使用pip将包安装到对应环境中,需要安装到我们自己的目录下。

这时我们在使用pip的时候可以使用--target-t参数来指定安装目录,此时pip会将你需要安装的包安装到你指定的目录下。

这里我们用本次实战营最常用的环境/root/share/pre_envs/pytorch2.1.2cu12.1来举例。


# 首先激活环境 conda activate /root/share/pre_envs/pytorch2.1.2cu12.1

# 创建一个目录/root/myenvs,并将包安装到这个目录下 mkdir -p /root/myenvs pip install <somepackage> --target /root/myenvs

# 注意这里也可以使用-r来安装requirements.txt pip install -r requirements.txt --target /root/myenvs

使用方法

想使用安装在指定目录的python包,可以在python脚本开头临时动态地将该路径加入python环境变量中去


import sys # 你要添加的目录路径 your_directory = '/root/myenvs' # 检查该目录是否已经在 sys.path 中 if your_directory not in sys.path: # 将目录添加到 sys.path sys.path.append(your_directory) # 现在你可以直接导入该目录中的模块了 # 例如:import your_module

python插件

vscode的debug相关笔记

debug的launch的json文件

断点类型:普通断点、

条件断点

  • 表达式断点(expression):当expression为true时,打断点。例如开sum的最后一轮,if i==end-1,这会在循环的最后一轮停下来

  • 触发断点(hit count):5,表示:当这一行触发5次,运行断点。

  • Log message断点():在断点触发时,输出你想要输出的内容。输出内容在debug console中。相当与,多一个登记的地方,current i is {i}, 大括号内容是会被python解释器中的变量赋值的。

  • 实践debug

    launch。json文件直接默认,python解释器选择,调试当前正在运行的文件,

    打断点

    然后点击绿色的三角开始debug

    点击下一步,直接跳转到下一次的断点处,(我点了4次,),所以我这里是i=4,右面那个“蓝色箭头,下面一个点”是逐步运行下一行。

    debug面板各按钮功能介绍:

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

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

    3. step into: 单步进入。如果当前行代码存在函数调用,则进入该函数内部。如果当前行代码没有函数调用,则等价于step over

    4. step out: 单步退出函数,返回到调用该函数的上一层代码。

    5. restart: 重新启动调试。

    6. stop: 终止调试。

    也可以根据需求,打多种类型的断点,各种断点作用可参考上面的知识点。

    命令行实现debug

    疑问:

    其实我不太懂为什么要在命令行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方式运行的时候可能会报以下warning。此时,debug可能不能正常运行,需要按他提示的给python加上-Xfrozen_modules=off参数禁用冻结模块即可。

    
    

    python -m -Xfrozen_modules=off debugpy --listen 5678 --wait-for-client ./myscript.py

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

    接下来

    z

    任务3:pip安装到指定目录

    使用VScode连接开发机后使用pip install -t命令安装一个numpy到看开发机/root/myenvs目录下,并成功在一个新建的python文件中引用。

    任务3:书生浦语API实现文本结构化json

  • 有一个小bug会导致报错。请大家自行通过debug功能定位到报错原因。

  • 可以使用openai python sdk来调用InternLM api

  • 若是想永久加入环境变量,可以对 ~/.bashrc 文件中添加以下命令。

  • export api_key="填入你的api token"

    保存后记得source ~/.bashrc

    python调用书生大模型的API

    使用环境变量,配置API-key,避免api的泄露

    只对当前终端生效,所以只能在当前终端运行python代码

    作者:ricky_fan

    物联沃分享整理
    物联沃-IOTWORD物联网 » vscode的debug学习、python调用大模型api-L0G2

    发表回复