【工具】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博客
python 项目可以组织成包,如果组织成包,它的目录结构是这样的:
my_package/ ├── my_package_code/ │ ├── __init__.py │ ├── module1.py │ └── module2.py ├── README.md ├── setup.py └── requirements.txt
一般都需要两级目录。
而对于 python 包,不能直接运行,但可以安装好之后直接引入。有关
setup.py
的写法值得新开一篇文章,我建议如果不清楚怎么写,最好直接问 ChatGPT,在它给你生成的模板上去改,这样对新知识的需求量是最少的。如果组织成模块,就可以比较方便地直接运行,只要把模块的入口代码放到根目录下就行了,比如这样:
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() #在此行打断点
这种方式的缺陷:
- 跳转的时候容易跳转到你已经装在 site-packages 目录下的内容,你想修改的时候还得返回去找原代码。
- 如果你没写完安装的程序,还可能会出现模块找不到的情况,还得去手动引一下路径,比如这样:
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
在终端打印的代码是即将执行的而不是执行完成的。
常用指令:
- n命令(next),让代码单步运行;s命令(单步进入,细运行),该命令会进入方法。
- <variable_name>.d(data),查看的中间变量variable_name的值。(注:对于大部分的类型,直接输入变量名即可)
- b <line>,在第line行打断点;b命令,查看所有断点。
- c命令(continue),让代码直接运行。
- clear <breakpoint_order>,清除第breakpoint_order个断点。
- l命令,查看多行当前运行的代码。
- 任何python代码,都可直接输入,如
print("1")
,非常方便。 - q命令,退出。
本账号所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_46106285/article/details/130469097。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
【工具】VScode|Linux 中怎么调试 Python 项目比较方便?又名 VScode 怎么调试 Python 项目(兼容环境Ubuntu18.04)相关推荐
- 使用工具连接linux中的mysql8.0
使用工具连接linux中的mysql8.0 在搭建完LNMP环境后用Navicate/mysql Workbench连接出错 遇到这个问题首先到mysql所在的服务器上用连接进行处理 1.连接服务器: ...
- 在linux安装编译vscode,Linux中安装 Visual Studio Code 详解
一起来学习如何在 Linux 发行版中安装 Visual Studio Code.Visual Studio Code 是基于 Electron 优化代码后的编辑器,后者是基于 Chromium 的一 ...
- linux常用工具awk,linux中awk工具
awk sed以行为单位处理文件,awk比sed强的地方在于不仅能以行为单位还能以列为单位处理文件.awk缺省的行分隔符是换行,缺省的列分隔符是连续的空格和Tab,但是行分隔符和列分隔符都可以自定义, ...
- Linux下配置Qt+ffmpeg开发环境 Ubuntu18.04
Linux Ubuntu18.04 ffmpeg编译安装与配置 前言 前期准备工作 安装yasm 安装nasm(2.13以上版本) 安装其他依赖 编译x264(只编译静态库) 编译SDL2 编译ffm ...
- linux文件查找工具,分享|Linux 中一种友好的 find 替代工具
fd 命令提供了一种简单直白的搜索 Linux 文件系统的方式. fd 是一个超快的,基于 Rust 的 Unix/Linux find 命令的替代品.它不提供所有 find 的强大功能.但是,它确实 ...
- win10 linux uefi启动不了系统安装教程,【从踩坑到教程】win10下ubuntu18.04双系统UEFI模式安装、Nvidia驱动安装...
欢迎转载,转载请说明出处 前言 之前(旧笔记本电脑)装过Ubuntu,按照经验贴一次就成功了,所以我以为不就是装系统嘛,很简单马上就能完事. 结果--这次(新笔记本电脑)花了 4天时间才装好.配好环境 ...
- linux中python解释器的配置_CentOS7配置Python3开发环境
许多小伙伴在刚接触Unix/Linux操作系统时会非常的不适应,毕竟突然的命令行操作会使习惯于Windows桌面操作的人特别难受,尤其是像笔者这样的手残党,是需要一段时间来适应的. 记得刚刚接触到Un ...
- linux 磁盘监控,9个在Linux中监视Linux磁盘分区和用法的工具
在这篇文章中,我们将回顾一些Linux的命令行工具 ,你可以使用它来检查磁盘分区在Linux中. 监控存储设备空间使用情况是SysAdmin的最重要的任务之一,这有助于确保存储设备上有足够的可用空间, ...
- 大数据WEB 部署项目到linux中
部署项目到linux中 零 , 目录 常见的linux命令 XShell工具 在linux上安装jdk 在linux上安装tomcat 在linux上安装mysql 部署项目 一. 常见的linux命 ...
最新文章
- GEO数据挖掘(3)-芯片基础知识
- java中有哪几种注释方式_在 Java 中, 有多种注释方法,其中 __________ 适用于单行注释。...
- Jenkins 中如何一次构建多个项目
- linux内核镜像解压,解压内核镜像
- DataGrid 功能实现收集(转)保留做参考
- 《Python编程从入门到实践》记录之字典嵌套
- RabbitMQ架构模型(一)
- android安全string,[求助]Android Xposed 有没有可以将String转换成Method类型的方法
- 利用alpha matte提取图片前景
- Java IO--字节-字符流转换
- 捷联惯导系统学习7.3(惯性/卫星组合导航 )
- 大学excel题库含答案_大学生计算机基础excel试题及答案
- 概率论与数理统计基础概念整理
- 基于强化学习工具箱的自适应巡航控制系统
- spring mvc
- 即时通讯 视频会议开源技术选择
- pixel-anchor 相关概念
- html去除图片背景颜色,canvas实现图片背景色去色变透明 » 张鑫旭-鑫空间-鑫生活...
- 从90年代JDM到现在CDM现在namuDM,来了
- 第十三届蓝桥杯C++B组国赛I题——齿轮 (AC)
热门文章
- stm32f4内部flash讲解
- HTML前端开发入门之表单标签/labei标签/datalist标签
- 基于Springboot + Vue2.0开发的 IM 在线聊天
- 修改linux编译配置文件,Porting:linux内核编译、配置、修改配置文件、添加.c文件到内核...
- 写给一个外汇女交易员的信(连载六)
- Unity 3D模型展示之webGL平台展现
- C\C++关键字---学习
- oppoK9Pro游戏性能怎么样
- 图片浏览器java程序_图片浏览器用java实现
- 2022-1-17第三章机器学习基础--网格搜索超参数优化、决策树、随机森林