【工具】VScode|Linux 中怎么调试 Python 项目比较方便?又名 VScode 怎么调试 Python 项目(兼容环境Ubuntu18.04)

使用过 Anaconda、Jupyter、Pycharm、VScode、VS2022、pdb 这几个 IDE 去编写 python 项目或者维护 python 环境,各有各的优缺点,但 VScode yyds!

可能会被网上说得天花乱坠的 Python 配置项吓退,会被 VScode 各种插件介绍吓退,但其实它只是个纯粹的文本编辑器,使用起来也是相当简单。

文章目录

    • 方案一:VScode
      • 1 在VScode中切换Python版本(运行及调试时)
      • 2 调试本地模块及第三方库
        • 问题一:vscode python 调试闪退
        • 问题二:本地模块调试方法(找不到模块)
          • 1)直接调用,然后调试
          • 2)(推荐)VScode 自带的 Python 模块调试器
        • 问题三:VScode 中传递命令行参数
    • 方案二:pdb

方案一:VScode

一般情况用 VScode 调试会遇到一些操作的问题,一是切换 python 版本,二是对于多文件的项目文件,文件到底咋放才能正确地相互引用,三是调试的时候怎么传参。

接下来简单解释一下。

首先,VScode 下载的官网链接:https://code.visualstudio.com/。
其次,安装插件“Python”,插件的名字就叫 Python,就只要安这一个就好了。
有些系统的应用商店的软件包很旧,比如 Ubuntu18.04,从应用商店下载的不支持中文输入法。

1 在VScode中切换Python版本(运行及调试时)

首先,声明并着重强调一下,切换 Python 版本,不需要配置环境变量。

Ctrl+Shift+P,选择配置项,输入python找到 python 的配置项,选择 interpreter 配置项去选择Python解释器。

如下图所示:

请添加图片描述

修改后,在运行和调试时均会自动采取该解释器。

2 调试本地模块及第三方库

有关launch.json文件的配置可参考VScode官网的文档-Launch configurations。

问题一:vscode python 调试闪退

参考:vscode python 调试闪退

解决办法:去官网安装VScode(在软件商店安装的阉割版无法支持中文输入),并将VScode的Python插件降级,我推荐 Ubuntu 18 的使用 2021.05.08 版本。

在这里插入图片描述

问题二:本地模块调试方法(找不到模块)

参考:python 【No module named】找不到自己写的模块 3种情况及解决方法-玛丽莲茼蒿-CSDN博客

  1. python 项目可以组织成包,如果组织成包,它的目录结构是这样的:

    my_package/
    ├── my_package_code/
    │   ├── __init__.py
    │   ├── module1.py
    │   └── module2.py
    ├── README.md
    ├── setup.py
    └── requirements.txt
    

    一般都需要两级目录。
    而对于 python 包,不能直接运行,但可以安装好之后直接引入。

    有关 setup.py 的写法值得新开一篇文章,我建议如果不清楚怎么写,最好直接问 ChatGPT,在它给你生成的模板上去改,这样对新知识的需求量是最少的。

  2. 如果组织成模块,就可以比较方便地直接运行,只要把模块的入口代码放到根目录下就行了,比如这样:

    my_package/
    ├── my_package_code/
    │   ├── __init__.py
    │   ├── module1.py
    │   └── module2.py
    ├── __init__.py
    ├── main.py
    ├── README.md
    ├── setup.py
    └── requirements.txt
    

    这种情况可以用 python3 -m my_package.main运行模块。

那么在 VScode 中怎么调试上述代码?有两种方式,一是另外写个函数,调用一下;另一种是更加推荐的,直接使用 VScode 的模块调试器。

1)直接调用,然后调试

新建文件,引入该模块即可断点调试,如下:

import onemodule.test
onemodule.test.main() #在此行打断点

这种方式的缺陷:

  1. 跳转的时候容易跳转到你已经装在 site-packages 目录下的内容,你想修改的时候还得返回去找原代码。
  2. 如果你没写完安装的程序,还可能会出现模块找不到的情况,还得去手动引一下路径,比如这样:
    import sys
    import os
    sys.path.append(os.pos.path.dirname(__file__))import onemodule.test
    onemodule.test.main() #在此行打断点
    

并且,注意在 launch.json 文件中添加 justMyCode: false,否则无法跳转进入模块文件。

如下图,点击添加配置进入launch.json文件:

请添加图片描述

如下图,将justMyCode选项改成false即可:

请添加图片描述

2)(推荐)VScode 自带的 Python 模块调试器

直接python -m onemodule.test就可以运行,同理可以编写对应的 launch 文件。

可以先用 VScode 生成 launch文件:

在这里插入图片描述
大概会生成如下内容:

{"name": "Python: 模块","type": "python","request": "launch","module": "module_name"
},

其实说白了,就是,调试文件时用的是 "program": "xxxx.py",而调试模块的时候用的是"module": "xxxx"。其他的比如参数配置之类的,和文件调试是一样的。

问题三:VScode 中传递命令行参数

同上,点击进入配置launch.json文件,如下图,添加args参数:

请添加图片描述

如果您无法理解为什么要做调试的配置,认为只要 print 就可以解决大部分问题,你可以考虑了解一下“条件断点”,以及变量监视。

方案二:pdb

参考:如何动态调试Python的第三方库-ybdesire-CSDN博客

优点:完全不需要配置;能直接调试模块/第三方库;对于已经知道用命令行如何运行,但不知道怎么在VScode中运行的python程序,不妨直接采取pdb进行调试。
缺点:无便捷的图形化界面。

需要调试时,只需在调试的代码前插入如下代码:

import pdb
pdb.set_trace()

再在命令行多加一个pdb,比如执行:python -m pdb onemodule.pdbtest,即可调试。

与gdb调试相似,pdb在终端打印的代码是即将执行的而不是执行完成的。

常用指令:

  1. n命令(next),让代码单步运行;s命令(单步进入,细运行),该命令会进入方法。
  2. <variable_name>.d(data),查看的中间变量variable_name的值。(注:对于大部分的类型,直接输入变量名即可)
  3. b <line>,在第line行打断点;b命令,查看所有断点。
  4. c命令(continue),让代码直接运行。
  5. clear <breakpoint_order>,清除第breakpoint_order个断点。
  6. l命令,查看多行当前运行的代码。
  7. 任何python代码,都可直接输入,如print("1"),非常方便。
  8. q命令,退出。

本账号所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_46106285/article/details/130469097。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

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

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

相关文章

日本僧人问道弘法寺当家师

时间过得真快&#xff0c;六名日本禅僧在弘法寺为期10天的体验生活已进行到第三天&#xff0c;晚上10&#xff1a;00&#xff0c;方丈印顺大和尚依然等候在丈室&#xff0c;与前二日不同的是&#xff0c;弘法寺的当家师智空法师也来到了方丈室。 六位日本僧人行礼完…

佛教基础知识

佛教基础知识 1、《佛教常识》&#xff08;1&#xff09;佛陀和佛教的创立&#xff08;2&#xff09;佛法的基本内容、书籍&#xff08;3&#xff09;僧团和佛的弟子&#xff08;4&#xff09;佛教在印度的发展、衰亡及复兴&#xff08;5&#xff09;佛教在中国的发展、演变 2、…

【ChatGPT与网络安全攻击】AI密码破解器可在60秒内攻破50%以上普通密码

研究表明&#xff0c;ChatGPT等功能强大AI工具已经被用于网络攻击者实施犯罪活动&#xff0c;例如开发恶意软件和生成钓鱼邮件等。如果人们的密码从数据库泄露或被破坏&#xff0c;那么网络攻击者采用AI密码破解器猜出密码是概率几乎是100%&#xff0c;其中50%以上会在60秒内被…

chatgpt赋能Python-pythonmd5解密

Python MD5解密原理及应用 MD5是一种广泛使用的哈希算法&#xff0c;被用于加密敏感数据。MD5算法使用不可逆的方法将任何长度的数据转换为固定长度的哈希值&#xff0c;并且只能通过暴力破解的方式破解加密后的敏感数据。尽管MD5算法被广泛采用&#xff0c;但历史上已发现其存…

chatgpt赋能python:Python怎么破解Windows软件?

Python怎么破解Windows软件&#xff1f; 作为一名有10年Python编程经验的工程师&#xff0c;我想分享一些破解Windows软件的经验。Python是一种高级编程语言&#xff0c;可以用于许多不同的应用程序&#xff0c;包括软件破解。 什么是软件破解&#xff1f; 软件破解是指绕过…

讯飞星火认知大模型与ChatGPT的对比分析

引言&#xff1a; 人工智能是当今科技领域的热门话题&#xff0c;自然语言处理是人工智能的重要分支。自然语言处理的目标是让计算机能够理解和生成自然语言&#xff0c;实现人机交互和智能服务。近年来&#xff0c;随着深度学习的发展&#xff0c;自然语言处理领域出现了许多创…

【Unity开发小技巧】UnityWebGL移动端和电脑端调起输入法,中文输入处理

目录 一.TextMesh Pro中文显示问题 1.PC端和移动端中文显示异常乱码&#xff08;解决方案&#xff09; 1.制作TextMesh Pro字体 方式一 2.制作TextMesh Pro字体 方式二 3.通用字体资源 2.web端中文不能输入窗口模式&#xff08;解决方案&#xff09; 二.移动端Inputfile调…

分享一个利用ChatGPT为世界上任何城市建立旅行路线(带链接)的工具 GPTravel Advisor

GPTravel Advisor - 在几秒钟内创建世界上任何城市的旅行路线 网址链接&#xff1a;https://gpt-travel-advisor.vercel.app/ GIthub&#xff1a;https://github.com/dabit3/gpt-travel-advisor ChatGPT中文论坛&#xff1a;https://gptocean.com/

ChatGPT 新版 API 推出 語音轉換文字模型 Whisper

OpenAI 宣布釋出新 ChatGPT API&#xff0c;允許第三方開發人員通過 API 將 ChatGPT 整合到他們的網站、應用程式及產品中。同時發表開源的&#xff0c;讓用户用以轉錄或翻譯音訊。 OpenAI 表示&#xff0c;新版的 ChatGPT API 不僅可用於創建人工智能聊天界面&#xff0c;更可…

怎么玩chatgpt?如何利用ChatGPT来编写PRD?

很多人对于chatgpt不知道怎么玩&#xff1f;其实对于一个产品经理来说&#xff0c;他可以这样玩&#xff01;在产品开发过程中&#xff0c;产品需求文档&#xff08;PRD&#xff09;是一个非常重要的文档&#xff0c;它描述了产品的功能、特性和目标用户等信息。编写PRD需要耗费…

我群 300+人已熟练使用的 ChatGPT Prompt 技巧

这是吴恩达联合 OpenAI 官方录制的 ChatGPT Prompt 免费视频课&#xff0c;最后一个总结&#xff0c;视频&#xff1a; https://learn.deeplearning.ai/chatgpt-prompt-eng/lesson/2/guidelines 在这一节中&#xff0c;我会分享两个技巧&#xff1a;Transforming 和 Expanding …

利用python进行数据分析~基金分析

利用python进行基金数据分析 背景说明分析过程1.获取所有种类基金数据1.1导入相关包1.2通过天天基金网接口获取基金数据1.2.1获取网页信息1.2.2将数据转化成二维表并写入本地磁盘&#xff08;dataframe&#xff09; 1.3数据概览1.3.1查看前几行数据1.3.2查看各类型基金分布及可…

Tushare+Talib基金指标分析

本文介绍python语言下的两个第三方库&#xff0c;Tushare&#xff08;获取股票和基金数据&#xff09;和Ta-Lib&#xff08;用于数据指标分析&#xff09;&#xff0c;及其相关使用案例。 一、安装 Tushare安装 # 方式1&#xff1a;pip install tushare# 如果安装网络超时可尝…

chatgpt赋能python:Python实现人机对话

Python实现人机对话 人机对话是指人类和机器之间的交互过程&#xff0c;其中人类作为用户&#xff0c;通过语音或文字与机器进行交互。Python作为一门流行的编程语言&#xff0c;可以用来实现人机对话系统。本文介绍如何使用Python实现人机对话。 Python语言的优势 Python是…

爬取链家网房价数据

感觉最近做的东西好菜~~随便了。 import requests from lxml import etree import csvheaders {Referer: https://zs.fang.lianjia.com/loupan/nht1pg1/,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.1…

python爬取全国房价并分析

使用方法程序原理 数据来源数据爬取 mac下mysql安装&使用&创建库和表网站爬取分析网站数据抓取代码基础 数据分析 我相信国内房价一直都是苦逼程序员比较关注的事情&#xff0c;我也非常关注全国部分地区的房价&#xff0c;因此我最原始的需求就是想看看全国都哪些地方…

爬虫 58同城房价信息 高德的接口进行房价地图绘制

爬虫部分 // An highlighted block def main():base_url1 https://hz.58.com/xinfang/loupan/all/pbase_url2 /?PGTID0d0091a8-0004-f055-d9b7-c447c3e1c187&ClickID1date_list []for i in range(1,34):html ask_url(base_url1str(i)base_url2)bs BeautifulSoup(htm…

安居客西安房源爬取 + pyecharts 数据展示

第一步是数据爬取&#xff1a; import xlwt from bs4 import BeautifulSoup from selenium import webdriver import time,random from selenium.webdriver import ChromeOptionsdef main():baseurl "https://xa.fang.anjuke.com/loupan/all/p"datalist getData(b…

看我如何抓取最新房价数据

经过前几年一轮房价大涨&#xff0c;到现在因为国家大力调控等原因&#xff0c;市场已经褪去热度&#xff0c;正在慢慢变得稳定&#xff0c;价格也相较最高时下降了些。那现在房价到底怎样&#xff1f;接下来又会是怎样的发展的趋势&#xff1f;这里我们就可以通过 Python 把最…