Python in Visual Studio Code 2023年11月发布
排版:Alan Wang
我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 11 月发布!
此版本包括以下公告:
- 改进了使用 Shift + Enter 在终端中运行当前行
- 弃用内置 linting 和格式设置功能
- 对 Python linting 扩展的改进
- 重新配置测试输出
- 虚拟环境停用帮助
- VS Code 中的 Python 发布视频
如果您有兴趣,可以在我们的 Python、Jupyter 和 Pylance 扩展更新日志中查看完整的改进列表。
对 Shift + Enter 在终端中运行行的改进
Python 扩展正在努力改进在未拉选要运行的代码时将代码发送到 Python REPL (Shift+Enter
) 的行为。以前,当您将光标放在一行 Python 代码上并按下 Shift+Enter
时,Python 扩展会将确切的行内容发送到 REPL,即使它会失败,例如,运行多行命令的一部分时会失败。
借助我们新的实验性智能发送功能,Python 扩展会将光标所在行周围的最小可运行代码块发送到 REPL 以执行。这可确保仅将完整和可执行的代码部分发送到 REPL。光标也会自动放置在下一个可执行行,以便在迭代执行多个代码块时提供流畅的体验。
若要试用,可以添加以下用户设置:"python.experiments.optInto: ["pythonREPLSmartSend"]
。虽然此功能目前处于实验阶段,但我们预计它将成为将来的默认行为。如果您对我们如何进一步改进此功能有任何反馈或建议,请告诉我们!
已弃用内置 linting 和格式设置功能
随着我们去年对 VS Code 中的 linting 和格式化扩展所做的所有正在进行的工作和改进,我们已弃用 Python 扩展中附带的内置 linting 和格式化功能。这包括所有 linting 和格式化命令以及设置 (python.linting.*
和 python.formatting.*
)。如果您仍在使用这些已弃用的设置,我们建议您删除它们,并改用 linting 和格式设置扩展,因为它们提供了更可配置和更灵活的体验。
如果你使用的是尚无扩展的 linter 或格式化程序,则可以为你喜欢的 Python 工具创建 linter 或格式化程序 VS Code 扩展!查看我们的 Python 工具扩展模板来快速入门。
此外,我们想重点介绍社区贡献的 Ruff 扩展。Ruff 是一个用 Rust 编写的 Python linter,它支持各种 linter,例如 pyflakes、pycodestyle、pydocstyle 等!他们最近还启用了在 VS Code 中使用 Ruff 作为格式化程序的支持 ("[python]":{"editor.defaultFormatter": "charliermarsh.ruff" }
)。试用 VS Code 中的 Python linting 和格式设置支持!
对 Python linting 扩展的改进
我们对团队支持的 linting 扩展进行了多项改进,以允许使用您最喜欢的 Python 工具获得更可配置和更灵活的体验。
Pylint、Mypy 和 Flake8 扩展现在提供设置,允许您为 linting 中排除的文件指定 glob 模式。如果您正在使用具有许多子项目的大型代码库,并且希望排除某些文件夹的 linting,这将非常有用。
这些设置分别为"pylint.ignorePatterns"
,"mypy-type-checker.ignorePatterns"
和 "flake8.ignorePatterns"
。
这些扩展还支持 cwd 设置,这允许您指定 linter 的工作目录。此设置已更新为支持 ${fileDirname}
变量 ,因此可以将工作目录动态设置为在编辑器中打开的文件的父文件夹。如果您正在使用 mono-repos,并且希望在打开不同子项目中的文件时动态更新 linter 的工作目录,这将特别有用。这些设置分别为"pylint.cwd"
,"mypy-type-checker.cwd"
和 "flake8.cwd"
。
我们还更改了 "mypy-type-checker.preferDaemon"
的默认值,仅适用于 Mypy 扩展。以前,它被设置为 true
,这意味着默认情况下将使用 Mypy 守护程序。收到反馈后,我们已将默认值更改为 false
。如果您想知道哪个值最适合您,我们建议您使用 Mypy 守护程序,前提是出于性能原因,您启用了 Mypy 将报告范围设置为整个工作区 ("mypy-type-checker.reportingScope": "workspace"
)。否则,如果报告范围设置为当前文件,建议使用扩展附带的 Mypy 可执行文件。
重新配置测试输出
我们已对启用 pythonTestAdapter
试验时在 Python 扩展中查看测试输出并与之交互的方式进行了重大改进,这是我们在几个月前宣布的。以前,测试发现和执行的输出不一致地分散在 Python 测试日志输出通道和“测试结果”面板中,某些信息在这两个位置重复。为了巩固体验,我们现在在“Test Results”面板中显示与测试执行相关的输出,并在 Python 输出通道中显示测试发现。要了解更多信息,请参阅我们的相关 wiki。
如果您使用 Pytest 并在 Workspace 的 settings.json
中设置"python.testing.pytestArgs": ["--color=yes"]
,则此新方法还支持输出中的着色。着色仅适用于“测试结果”面板中的测试执行,不适用于“Python 测试日志”面板中的发现或输出。
还有一个新按钮,允许你在发生测试发现错误时更轻松地从“测试资源管理器”视图打开测试日志。
虚拟环境停用帮助
几个月前,我们宣布了一项实验背后的新功能,该功能支持使用环境变量激活终端,旨在通过自动激活终端中的选定环境来增强您的开发工作流程,而无需显式激活命令。但是,由于没有显式激活脚本在工作,因此启用此实验时,该命令 deactivate
不再起作用。
Python 扩展现在将检测您何时尝试运行该命令 deactivate
,并显示一个帮助程序通知,该通知将指导您如何为 shell 添加脚本,以便在通过环境变量激活环境时使命令能够再次工作。它还提供了一个按钮,可以更方便地打开 shell 配置文件,以便您添加必要的脚本。
您可以在此处找到有关如何为 shell 添加必要脚本的完整文档。
如果您未参与实验,但想要试用此功能,可以添加以下用户设置:"python.experiments.optInto: ["pythonTerminalEnvVarActivation"]
。
VS Code 中的 Python 发布视频
Python 社区倡导者 Dawn Wages 介绍了 VS Code 中的 Python 发布视频中的关键发布新闻和增强功能!这些短视频将在 Visual Studio Code YouTube 频道上随所有后续版本一起发布,重点介绍关键更改和增强功能,以及演示如何与这些新功能交互的视频内容!
有关更多 Python 新闻和社区参与,请查看每月第二个星期五由 Dawn Wages 主办的 Python Pulse!
其他更改和增强功能
我们还添加了一些小的增强功能,并修复了用户请求的问题,这些问题应该会改善你在 Visual Studio Code 中使用 Python 和 Jupyter Notebook 的体验。一些值得注意的变化包括:
- 我们的文档中添加了一个新的 FastAPI 教程!了解如何在开发 FastAPI 应用程序时充分利用 VS Code 和 Python 扩展。
- Python 扩展现在会显示一条通知,以帮助在尝试在包含依赖项文件(如
requirements.txt
或requirements/*.txt
)且没有当前.venv
或者.conda
文件夹的工作区中运行或调试 Python 文件时创建虚拟环境。此通知提供了一种使用 Python:Create Environment 命令创建新虚拟环境的快速简便方法。此设置可以禁用python.createEnvironment.trigger
设置为off
。 - Python 调试器扩展现在具有特定于平台的版本,这意味着在更新时将仅安装平台所需的文件。这减小了扩展的大小,并有助于缩短启动时间。
- Tensorboard 功能现已从 Python 扩展中移出,并移至独立的 Tensorboard 扩展中。您可以在 Tensorboard 扩展 GitHub 存储库中提供反馈。
- 现在,您可以通过状态栏上的语言状态图标更轻松地启用和禁用 Pylance 自动导入完成 (pylance-release#3894)
- 用 Pylance 时 IntelliSense 支持
__setattr__
,__delattr__
以及__getattribute__
(pylance-release#4786)
我们还要特别感谢本月的贡献者:
- @PeterJClaw 在 @vscode-python #22132 中将 Python 3.12 支持将 Jedi 提升到 0.19.1
- @BoltonBailey 从 @vscode-python#22254 中的错误消息中删除不匹配的括号
- @HVbajoria 修复了 @vscode-pylint#390 中面向用户的文本中 “Python” 的大写
征集社区反馈
当我们计划和优先考虑未来的工作时,我们重视您的反馈!以下是我们希望得到反馈的几个问题:
- 重写时 Django 测试的建议设计 (@vscode-python#22206)
- 当用户在实际导入之前对方法执行 Shift+Enter 时自动导入库 (@vscode-python#22329)
通过从 Marketplace 下载 Python 扩展和 Jupyter 扩展来尝试这些新的改进,或直接从 Visual Studio Code 中的扩展视图(Ctrl + Shift + X 或 ⌘ + ⇧ + X)安装它们。可以在文档中详细了解 Visual Studio Code 中的 Python 支持。如果遇到任何问题或有建议,请在 Python VS Code GitHub 页面上提交问题。
相关文章:

Python in Visual Studio Code 2023年11月发布
排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 11 月发布! 此版本包括以下公告: 改进了使用 Shift Enter 在终端中运行当前行弃用内置 linting 和格式设置功能对 Python linting 扩展的改进重…...

算法通关村——数字中的统计、溢出、进制转换处理模板
数字与数学基础问题 1、数字统计 1.1、符号统计 LeetCode1822. 给定一个数组,求所有元素的乘积的符号,如果最终答案是负的返回-1,如果最终答案是正的返回1,如果答案是0返回0. 这题其实只用看数组中0和负数的个数就好了&#x…...
ESP01S通过心知天气获取天气和时间信息
ESP01S通过心知天气获取天气和时间信息 设置STA模式 ATCWMODE1 连接wifi ATCWJAP"wifi名称","wifi密码"3.设置时间地域 ATCIPSNTPCFG1,8获取时间 ATCIPSNTPTIME?返回: CIPSNTPTIME:Fri Nov 17 17:09:22 2023 OK连接心知服务器 ATCIPSTAR…...
docker容器内core dumped却找不到core文件
1. 检查ulimit, 使用命令: ulimit -a rootb7c19f6da1e3:/usr# ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks…...

ubuntu提高 github下载速度
Github一般用于Git的远程仓库,由于服务器位于国外,国内访问速度比较慢,为了提高访问速度,决定绕过DNS域名解析。 获取Github的IP地址 按下ctrl+alt+T打开命令终端,输入: nslookup gi…...
Node.js之path路径模块
让我为大家介绍一下path路径模块吧! 什么是path路径模块? path 模块是 Node.s 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。 介绍三个关于path模块的方法: path.join() 方法&…...

TCP与UDP协议
TCP与UDP协议 1、TCP协议: 1、TCP特性: TCP 提供一种面向连接的、可靠的字节流服务。在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP。TCP 使用校验和,确认和重传机制来保证可靠传输。TCP 给数据分节进行排序…...
“ /^A-Z:\\{1,2}^/:\*\?<>\|+\.(jpg|gif|png|bmp)$/i ”这个正则表达式的理解
这个正则表达式可以分解为以下几个部分: ^:这是一个开始符号,表示匹配必须从字符串的开始部分开始。/:这是一个斜杠符号,通常在正则表达式中用来表示特殊字符的转义。A-Z::这部分表示匹配一个大写字母后跟…...
批量下载Sentinel数据脚本2023
批量下载Sentinel数据脚本2023 那些最好的程序员不是为了得到更高的薪水或者得到公众的仰慕而编程,他们只是觉得这是一件有趣的事情! 批量下载Sentinel数据脚本2023 批量下载Sentinel数据脚本2023🌿前言🌿脚本地址📧Su…...

lv11 嵌入式开发 ARM指令集中(伪操作与混合编程) 7
目录 1 伪指令 2 伪操作 3 C和汇编的混合编程 4 ATPCS协议 1 伪指令 本身不是指令,编译器可以将其替换成若干条等效指令 空指令NOP 指令LDR R1, [R2] 将R2指向的内存空间中的数据读取到R1寄存器 伪指令LDR R1, 0x12345678 R1 0x12345678 LDR伪指令可以将任…...

北邮22级信通院数电:Verilog-FPGA(10)第十周实验 实现移位寄存器74LS595
北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 二.管脚分配 三.实现过程讲解及效…...

麒麟系统安装找不到安装源!!!!设置基础软件仓库时出错
记录--华为RH2288 V3服务器安装麒麟系统遇到的问题 1.遇到的问题--“设置基础软件仓库时出错”报错导致无法继续安装 没办法下一步 先说结论:系统bug 该问题在CentOS、Rocky Linux最新版中均存在 解决: (一)、如果是外网直接配…...

代码随想录算法训练营第三十九天【动态规划part02】 | 62.不同路径、63. 不同路径 II
62.不同路径 题目链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 求解思路: 动规五部曲 确定dp数组及其下标含义:dp[i][j] 表示从(0,0)出发,到(i,j&#x…...

鸿蒙4.0开发笔记之DevEco Studio如何使用Previewer窗口预览器(一)
一、预览器作用 DevEco Studio预览器概况在HarmonyOS应用开发过程中,通过使用预览器,可以查看应用的UI效果,方便开发者实时查看应用的运行效果,随时调整代码。 二、打开Previewer预览器 1、正常启动 打开预览器的位置在DevEco…...

音视频转换软件Permute mac中文板特点介绍
Permute mac是一款Mac平台上的媒体格式转换软件,由Chaotic Software开发。它可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式,并提供了一些常用工具以便于用户进行编辑和处理。 Permute mac软件特点 - 支持大量格式:支持几乎所…...

前端uniapp列表下拉到底部加载下一页列表【下拉加载页面/带源码/实战】
目录 一. 图片1.2. 二.list.vue三.uni-load-more.vue最后 一. 图片 1. 2. 二.list.vue <template><view><!--列表--><scroll-view scroll-y"true" class"scroll-Y" :style"height: scrollviewHigh px;" lower-threshol…...

超聚变服务器关闭超线程CPU的步骤(完整版)
前言: 笨鸟先飞,好记性不如烂笔头。 我们项目都用不到超线程CPU,所以调测设备的时候都需要关掉,最近新设备换成了超聚变的服务器,这篇记录我关闭(超聚变)服务器超线程CPU的方法步骤。 关闭超线程CPU的步骤…...

智能驾驶汽车虚拟仿真视频数据理解(一)
赛题官网 datawhale 赛题介绍 跑通demo paddle 跑通demo torch 提交的障碍物取最主要的那个?不考虑多物体提交。障碍物,尽可能选择状态发生变化的物体。如果没有明显变化的,则考虑周边的物体。车的状态最后趋于减速、停止,时序…...
事关Django的静态资源目录设置(Django的setting.py中的三句静态资源(static)目录设置语句分别是什么作用?)
在Django的setting.py中常见的三句静态资源(static)目录设置语句如下: STATICFILES_DIRS [os.path.join(BASE_DIR, static)] STATIC_ROOT os.path.join(BASE_DIR, static) STATIC_URL /static/下面介绍这三句话的作用。 首先说第1句和第2句: STATI…...

Vue.js2+Cesium1.103.0 十四、绘制视锥,并可实时调整视锥姿态
Vue.js2Cesium1.103.0 十四、绘制视锥,并可实时调整视锥姿态 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"><divclass"control"style"position: absolute;right: 50px;top: 50px…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...