开启 Python 组件 Boto3 在 IDE 中的智能提示!

boto3:Python连接S3对象存储并进行文件操作(上传、下载、删除) 在日常进行数据高可用时,会将数据存入对象存储中。在一般的企业中,对象存储资源池只有管理员拥有Web界面管理,普通账号需要对数据进行管理时,有如下方法:,如对于S3对象存储有可以进行使用,其优点是操作简单,界面可视化;缺点是每次需要手动操作。,其优点是适合无法使用可视化界面的IT环境和可自动完成,缺点是需要自己编辑。 阅读详情

 在用 Python 编写 AWS 服务时,要用到 Boto 3 组件,而像 boto3.client('s3') 获得的对象只能被 IDE 识别为一个 BaseClient, 具体包含什么操作方法是在运行时由参数 s3 指示的基于 JSON 文件所描述的。因此 IDE 对 s3 = boto3.client('s3') 的 s3 对象无法提供有效的智能提示,每次用 Boto 3 时不得不打开 Boto 3 的在线 API 文档来对照。长此以往,总觉麻烦且效率低下,有种一直摸着石头过河的感觉。那么,是否有办法让 IDE 智能提示出各种 boto3.client('<service>') 的实际操作呢?网上找了找,确实有这个需求,解决办法有

  1. botostubs : 与 boto3 API 保持更新(每三天),并支持众多 IDE, 试过在 IntelliJ IDEA 和 Visual Studio Code 中可用
  2. pyboto3 : 上次更新在两年前, https://github.com/wavycloud/pyboto3 , 只在 Python 2.7 下测试过
  3. autoboto : 需有智能提示,但改变了应用 Boto 3 组件的方式,不建议使用

本文重点推荐 botostubs, 下面会叙说具体理由,在进入正是之前,不妨来回顾一下直接使用 Boto 3 时没有好的智能提示的问题

Boto 3 组件智能提示的现状

Visual Studio Code 中对 s3 = boto3.client('s3') s3. 没有任何提示

 

 

 

 

源代码:Python资源共享群:484031800

IntelliJ IDEA 中只识别为 BaseClient

 

 

 

 

反而 Python 控制台令人意外的聪明,能提示出全部的操作,由于 Python 控制台每输入完一行马上进行解析,所以知道运行时类型

 

 

 

 

boto3.client('<service>') 的实际类型

> import boto3  >>> s3 = boto3.client('s3')  >>> type(s3)  <class 'botocore.client.S3'>  >>> type(boto3.client('sqs'))  <class 'botocore.client.SQS'>

现在正式开始步入正题,看我的日志总是需要一点耐心的

botostubs 开启 boto 3 API 在 IDE 中的智能提示

看 botostubs 组件页面 h ttps://pypi.org/project/botostubs/ ,它号称的是让任何 IDE 能对 Botot 3 API 进行智能提示,比如 IntelliJ IDEA, Visual Studio Code, Vim, Emacs, Sublime, Atom 等。而且它能紧跟 Boto 3 的更新,它每三天检查一次 boto 3 是否有更新,有更新时则生成新的桩 -- 今天(2019-07-13) GitHub 上显示最后更新时间为 12 天前。所以本地要在 IDE 中获得最新智能提示,应经常性的用 pip install --upgrade botostubs 更新。

首先需要安装 botostubs, 命令 pip install botostubs

botostubs 在 IDE 的使用

应用 botostubs 时需要在代码中有一点变动,基本对原有代码没有侵入性的。

下图是在 IntelliJ IDEA 中的表现,有了 botostubs 后, IDE 能认出这儿的 s3 是一个 S3 类型,进而提示出所有实际可用的操作以及方法参数类型

 

 

 

 

在这里 botostubs 借用了 Python 3 之后类型提示(type hints) 的语法,关于类型提示可参考 全面理解Python中的类型提示(Type Hints) 。

具体来说除了前面的紧随变量声明后的 # type: botostubs.S3 ,还有另外两种书写形式。在此对比一下所有的三种方式

   形式 代码 说明   行内注释 import botostubs
import boto3
 
s3 = boto3.client('s3') # type: botostubs.S3
s3.delete_bucket(...)

1. import botostubs 行可省略

2. 如果有 import botostubs 的话,在 IntelliJ IEDA 书写 type: botostubs. 处也会有提示其下的类型

3. 书写比较便利,如果发布时需移除 botostubs 依赖可把源文件中的 import botostubs 去除

4. 同时支持 Visual Studio Code,通用性较强

   文档注释 import boto3
 
s3 = boto3.client('s3')
""" :type: botostubs.S3 """
 
s3.delete_bucket(...)

1. import botostubs 此时没有必要存在,因为在文档注释中写 :type: botostubs. 处没有智能提示

2. 源代码级别就无需依赖于 botostubs ,它纯粹是级 IDE 看的

3. 但是在 Visual Studio Code 中没有智能提示

   类型声明 import botostubs
import boto3
 
s3: botostubs.S3 = boto3.client('s3')
s.delete_bucket(...)

1. import botostubs 也不能省略了,否则解析执行时会报错

2. 对 botostubs 有强依赖,不建议使用,而且 Python 2 不能用 -- 不过谁还在用 Python 2 呢?

3. 在 Visual Studio Code 中也支持

以上三种形式在 IntelliJ IDEA 都有效果,基于通用性来讲第一种方式更可取,这也是为什么 botostubs 的官方只演示了该方式。在发布包带上 botostubs 这个运行时无关的依赖还算不上什么牺牲。

注:如果在基于 IntelliJ 的 IDE 中不能得到有效提示,需要在 IDE 的 Help/ Edit Custom Properties... 中加上一行

idea.max.intellisense.filesize=20000 

再来到 Visual Studio Code 中体验一下

 

 

 

 

在 Visual Studio Code 中也可以用 batch: botostubs.Batch = boto3.client('batch') 的形式,但是不支持文档注释方式

batch = boto3.client('batch')
""" :type: botostubs.Batch """
batch.                          # 这时在 Visual Studio Code 中没有智能提示

还有一个 Visual Studio Code 比 IntelliJ IDEA 弱的地方是,书写注释时 botostubs. 无法提示出其下的类型,希望 Visutal Studio Code 以后会有所改进。

注:在 Visual Studio Code 中用 botostubs 的话,如果不能提示,请在 Visual Studio Code 设置中把 python.jediEnabled 设置为 false。

顺带了解另两个 pyboto3 和 autoboto

虽然不建议使用它们,但不妨来看一下

pyboto3 在 IntelliJ IDEA 中

 

 

 

 

上图来自于官方的 GitHub 网站 https://github.com/wavycloud/pyboto3 。它的实现与 botostubs 类似,只是没有人再维护了,随着 Boto 3 的升级,只能提示老的 API 的,而且也只在 Python 2.7 下测试过。亲测了一下,在 Visual Studio Code 中没有智能提示。

autoboto 实际是 boto3 的封装

https://github.com/jbasko/autoboto 也说了不建议使用,已彻底停止维护了。

boto3 with auto-complete in PyCharm and dataclasses not dicts. NOT RECOMMENDED FOR USE (2019-01-26)

它完全构架于 Boto 3 之上的,可维护性太差,Boto 3 一小升级可能导致 autoboto 大动手脚与之相适应。

from autoboto.services import s3
 
s3 = s3.Client()

也由于它完全颠覆了使用 Boto 3 的方式,以致于它更可能带来新的问题。

总结

botostubs 是目前最佳选择,并且编码形式上推荐 s3 = boto3.client('s3') # type: botostubs.S3 。它与 Boto 3 保持同步更新,并兼容于 IntelliJ IDEA 和 Visual Studio Code。 import botostubs 在 IntelliJ IDEA 中是非必要的,打包前去除 import botostubs 即可完全免去发行包对 botostubs 的依赖,带上它也无妨。 

mypy-boto3-appsync 库安装及类型检查 本文还有配套的精品资源,点击获取 简介:mypy-boto3-appsync 是一个专门针对AWS AppSync服务的Python库,它为boto3库中的AppSync模块提供了类型注解,以支持mypy的类型检查功能。该库有助于增强代码质量,通过静态类型检查提前发现潜在bug,并提升在IDE或代码编辑器中的智能提示和自动完成功能。库文件包含一个setup.py安装脚本,以... 阅读详情

相关推荐

Python库 | boto3-stubs-1.16.6.0.tar.gz

资源分类:Python库 所属语言:Python 资源全名:boto3-stubs-1.16.6.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.youkuaiyun.com/article/details/101784059

从编程小白到量化宗师之路---期货CTP高频数据Tick下载(含穿透式监管,包含全部C++源代码)

这是《从编程小白到量化宗师之路》系列的第一个高级课程。本课程宗旨是缩短个人和小型结构投资者和大型机构投资者的差距。课程内容从C++环境的安装开始使用,到期货数据采集,完美实现一套期货交易高频软件开发(也可做虚拟货币交易)。课程注重实战,学员上课后,可以达到:日常进行的高频交易,自定添加新的股票接口,添加新的虚拟货币交易所。《《编程小白到量化宗师之路---高频交易系统编写---期货CTP高频数据Tick下载》是上述课程的拆分课程,便于同学们自己针对性选择学习。本可能涵盖C++环境安装 cmake, VS2019,从现在上期技术的CTP API直到编写行情和交易部分代码,最终完成一个每天自动下载全市场行情数据的工具应用编写。

让 AI 变聪明的 20 条指令:如何让大模型回答得更精准、更专业、更实事求是

让 AI 变聪明,本质上不是写几句神奇咒语,而是把你的任务表达得更清楚,把事实标准设得更严格,把输出格式规定得更明确,把不确定性管理得更认真,把历史对话利用得更充分。大模型的强项是语言生成、信息组织、模式归纳和方案扩展;弱项是事实核验、实时更新、责任判断和对模糊意图的准确猜测。好的指令,就是在用人的判断弥补模型的弱点,让模型把强项发挥在正确的地方。

Sumarua的博客 1527

【Python】Pycharm 的 python_stubs

这个 bug 就是,他在生成存根的时候,并没有按照库的版本去及时的更新这个存根,尤其是对 C、C++ 或者 Cython 编译而来的库,因为这种库是没有纯 Python 库那种入口文件的,所以 Pycharm 会解析这些库并生成相应存根,但是没有版本管理就很 der。有自己维护库又实用 pycharm 的人可能会遇到相同问题,在 C++ 中已经暴露出接口了,并且在 Python 中也可以正常使用,但是 Pycharm 就是没有智能提示,还会标黄恶心你。

alun550的博客 1794

Xiaojie雷达之路---毫米波雷达基础知识---角度估计

本篇文章主要介绍毫米波雷达的基础知识中的角度估计,对于本篇文章主要回答5个问题 1.在雷达的前方,如何估计前方一个物体的角度 2.角度测量的准确性 3.如何测量多个物体的角度 4.雷达可测的角度的视场最大值为多少 5.角度分辨率取决于什么因素 文章目录估计雷达前面一个物体的角度角度测量的准确性雷达的最大角视场测量雷达前方多个距离和速度相同的物体角度分辨率角度估计的流程 估计雷达前面一个物体的角度 估计一个物体的角度,最少需要两根接收天线 发射天线发送一个chirp,经过物体发射后信号,信号分别被第一根天

XiaoJie的博客 1万+

我看MFC的过去、现在和未来

首先说句题外话,虽然我现在的“主业”是Qt,但自己扪心自问,对MFC的熟悉程度要超过Qt。正是由于有了对MFC的熟悉,才能在使用Qt时,比较清醒的认清两者的优劣之处,在此暂且不提。 这个话题也可以说是由来已久,众说纷纭,今时我也谈谈自己的感悟。 一、对MFC的总体看法 首先看看云风在其《游戏之旅-我的编程感悟》一书中对MFC的看法: “我所见到的程序员中,很多把C+

qter_wd007的专栏 6117

pycharm中插件用于python3代码提示

python相关学习资料:https://edu.51cto.com/video/4645.htmlhttps://edu.51cto.com/video/1158.htmlhttps://edu.51cto.com/video/3502.htmlPyCharm中插件用于Python3代码提示的实现指南 作为一名刚入...

weixin_36943101的博客 279

电力电子技术复习笔记

通常在开关过程前后加入谐振,使开关开通前电压先降到0,关断前电流先降到0,消除开关过程电压、电流的重叠,降低它们的变化率,从而大大减小甚至消除开关损耗。小信号线性化模型的原理:忽略开关频率分量和开关频率谐波分量及其边频分量,建立占空比、输入电压等的低频扰动对变换器中的电压、电流影响的模型。解:可以利用变压器的变比改变输出电压大小,避免控制过程的占空比过小或过大,提高控制精度,同时有利于减轻输出电路中电力电子器件的耐压要求。驱动电路:用于控制功率半导体器件的开关,从而控制电路的电流和电压。

Miracle Fan的博客 1万+

智能提示_开启 Python 组件 Boto3 在 IDE 中的智能提示!

在用 Python 编写 AWS 服务时,要用到 Boto 3 组件,而像 boto3.client('s3') 获得的对象只能被 IDE 识别为一个 BaseClient, 具体包含什么操作方法是在运行时由参数 s3 指示的基于 JSON 文件所描述的。因此 IDE 对 s3 = boto3.client('s3') 的 s3 对象无法提供有效的智能提示,每次用 Boto 3 时不得不打开 B...

weixin_28883533的博客 384

后仿真中的必懂VCS仿真选项之initreg和deposit

后仿真中,我们常常对于没有复位寄存器和存储器单元,使用仿真选项之initreg和deposit,两种处理方式。今天做总结。请注意:请勿将两者进行同时使用。对于到底选取哪种方式,要结合实际的情况决断。但是,两者同时使用,会有冲突,得不到预期结果。

那么菜的博客 4334

HINT: High-quality INpainting Transformer with Mask-Aware Encoding and Enhanced Attention 训练自己的数据集

HINT(高质量图像修复变换器)通过创新的掩码感知像素洗牌下采样模块(MPD)和空间激活通道注意力层(SCAL),显著提高了图像修复的质量,尤其在大面积缺失区域的情况下。实验表明,HINT在CelebA、CelebA-HQ、Places2和敦煌数据集上超越了现有的最先进模型,提升了图像的细节和结构一致性。

LJ1147517021的博客 314

开启 Python 组件 Boto3 在 IDE 中的智能提示

在用 Python 编写 AWS 服务时,要用到 Boto 3 组件,而像 boto3.client('s3') 获得的对象只能被 IDE 识别为一个 BaseClient, 具体包含什么操作方法是在运行时由参数s3指示的基于 JSON 文件所描述的。因此 IDE 对s3 = boto3.client('s3')的s3对象无法提供有效的智能提示,每次用 Boto 3 时不得不打开 Bo...

一叶不知秋 451

dolphinscheduler集群服务一键安装启动实现流程剖析

通过以上分析我们基本梳理清楚了整个dolphinscheduler项目的一键安装启动逻辑, 我们现在在通过一张图正好理一下整个实现流程。关于一键停止集群服务及一件查询集群各个角色服务实例运行状态的实现也都在stop-all.sh/status-all.sh及dolphinscheduler-daemon.sh这三个脚本中, 有兴趣自行研究。写这篇文章的核心目的不仅在于给大家分享如何优秀的开源项目的一键安装部署的实现过程。

最爱嫣夜来 1208

为什么 boto3 代码总是缺少类型提示?Mypy Boto3 Builder 如何彻底解决这个老大难

写过 AWS 云上 Python 项目的开发者,几乎都经历过同一个痛点:`boto3` 代码在 IDE 里没有任何类型提示,函数参数靠猜、返回值全靠文档。而 **Mypy Boto3 Builder** 正是为解决这个问题而生的类型注解生成器,它能为 `boto3` 自动生成完整的类型注解包,兼容 VSCode、PyCharm、Emacs、Sublime Text、mypy 和 pyright。本

gitblog_00786的博客 746

【基于 CasADi 的欠驱动无人船实时非线性模型预测控制(NMPC)实现 Visual Studio 2022 C++】

本文介绍了基于CasADi和IPOPT在Visual Studio 2022 C++环境下实现的欠驱动无人船实时非线性模型预测控制(NMPC)方案。文章详细阐述了NMPC基本原理、欠驱动无人船动力学模型(包含状态变量和控制变量定义),并给出了C++实现的核心代码框架。该方案通过显式引入系统动力学模型和约束条件,在每个采样周期滚动优化控制序列,有效解决了欠驱动无人船的轨迹跟踪与避碰问题。文中还提供了VS2022配置CasADi环境的详细步骤,包括预编译包下载、工程属性设置等关键环节,为工程实现提供了完整的技术

vor234的博客 654

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

5 分钟快速上手 mypy_boto3_builder:让 boto3 获得类型检查与智能代码补全

boto3 是 Python 操作 AWS 云服务最常用的 SDK,但它采用动态生成 API 的方式,在代码里既没有类型注解,也没有函数签名,导致 IDE 无法提供智能代码补全,mypy、pyright 也无法做类型检查——写错参数名只能等运行时才报错。**mypy_boto3_builder** 正是解决这个痛点的 boto3 类型注解生成器:它能自动为 boto3 生成完整的类型注解包,让你在

gitblog_00295的博客 700

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

一条命令生成全部类型存根:mypy_boto3_builder CLI 完全指南

在使用 boto3 开发 AWS 应用时,你是否遇到过 IDE 无法补全、mypy 报出大段 "Any" 警告的烦恼?mypy_boto3_builder 是一个自动生成 boto3 类型存根(Type Stubs)的开源工具,它通过 CLI 一条命令就能为全部 AWS 服务生成类型注解,兼容 VSCode、PyCharm、Emacs、Sublime Text、pyright 和 mypy,让你的

gitblog_01191的博客 1061

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mypy-boto3-evidently 类型桩包实战指南:为 boto3 CloudWatch Evidently 客户端补齐静态类型

本文围绕 Context Hub 仓库中维护的 [mypy-boto3-evidently 官方指南](https://link.gitcode.com/i/d3f705f789cd69a496a06f6f31b7fb78),系统讲解如何为 boto3 的 `evidently`(CloudWatch Evidently)服务客户端引入静态类型:从安装方式、凭证初始化,到 `evaluate_fe

gitblog_00786的博客 314

使用 mypy-boto3-iam 为 boto3 IAM 调用注入完整类型提示:安装、Typed Client 与 Paginator/Waiter 实战

`mypy-boto3-iam` 是 AWS IAM(Identity and Access Management)服务在 Python 生态中的类型存根(type stubs)包,为 `boto3` 的 IAM 客户端、资源、分页器、等待器、字面量枚举与请求/响应 `TypedDict` 形状提供完整的静态类型信息。本指南以 Context Hub 仓库中的 [mypy-boto3-iam Py

gitblog_00844的博客 189

mypy_boto3_builder 安装配置教程:pip 与 uv 两种方式从零起步

mypy_boto3_builder 是一款强大的 **boto3 类型注解生成器**,它能为 boto3、botocore、aiobotocore 等 AWS 生态库自动生成完整的类型注解,让 VSCode、PyCharm、Sublime Text、Emacs 以及 mypy、pyright 等工具获得智能补全和静态类型检查能力。本教程将从零开始,带你用 pip 和 uv 两种方式完成 mypy

gitblog_00822的博客 760

types-boto3 的 essential、lite 与 full 版本怎么选?Mypy Boto3 Builder 产物全解析

面对 types-boto3 的 essential、lite、full 三种版本,很多刚接触 boto3 类型注解的开发者都会陷入选择困难。本文将从 Mypy Boto3 Builder 的产物体系出发,一次性讲清 types-boto3 各版本的区别、适用场景与安装方式,帮你用最短时间选对方案,让 VSCode、PyCharm、mypy、pyright 都能顺畅地完成 AWS 代码的类型检查。

gitblog_00632的博客 632

mypy-boto3-autoscaling 实战指南:为 boto3 Auto Scaling 代码接入完整类型标注

本指南围绕 `mypy-boto3-autoscaling` 这一类型存根(type stub)包展开,讲解如何在 Python 项目里为基于 `boto3` 的 Amazon EC2 Auto Scaling 调用补齐客户端类型、请求/响应形状、分页器与枚举字面量,并配合 `mypy`、`pyright` 等检查器获得补全与静态校验。读完本文,你将掌握三种安装路径的取舍、显式注解与 `TYPE_

gitblog_00056的博客 285

aiobotocore 与 aioboto3 异步类型注解实战:Mypy Boto3 Builder 异步支持全解析

在 Python 异步开发中,**aiobotocore 与 aioboto3 异步类型注解**一直是开发者最头疼的问题之一:原生库没有类型提示,写 `await client.get_object(...)` 时 IDE 一片空白,mypy 也完全无法检查。而 Mypy Boto3 Builder 正是为解决这一痛点而生的类型注解生成器,它能为 aioboto3、aiobotocore 自动生成

gitblog_00273的博客 881

Context Hub 技术指南:mypy-boto3-lightsail 类型注解包在 AWS Lightsail Python 开发中的完整实战

mypy-boto3-lightsail 是 boto3 Lightsail 服务的类型注解(type stub)包,它本身不发起任何 AWS 请求,而是为类型检查器(mypy、pyright、Pylance)与编辑器补全提供类型化的 client、paginator、literals 和 TypedDict 请求/响应结构。本文以本仓库收录的 [mypy-boto3-lightsail 官方维护

gitblog_00630的博客 718

只构建你需要的服务:mypy_boto3_builder 按需生成 s3、ec2、dynamodb 类型包的 5 个技巧

如果你正在使用 Python 和 AWS,你一定遇到过这样的痛点:`boto3` 的类型提示缺失、代码补全靠猜、`mypy` 检查直接"罢工"。**mypy_boto3_builder** 就是为解决这个问题而生的开源工具,它能按需生成 s3、ec2、dynamodb 等服务的类型注解包(type annotations),并兼容 VSCode、PyCharm、pyright 和 mypy 等主流

gitblog_01033的博客 1015

mypy-boto3-route53resolver 完全指南:为 boto3 Route 53 Resolver 客户端接入完整类型标注

mypy-boto3-route53resolver 是为 Amazon Route 53 Resolver 服务的 boto3 客户端、分页器(paginators)与请求/响应数据结构提供类型标注的 stub 包。本文以本仓库维护的 `mypy-boto3-route53resolver` 官方指南([content/aws/docs/mypy-boto3-route53resolver/py

gitblog_01166的博客 425
上一篇: Python3+pyQt5+QtDesignner实现窗口化猜数字游戏!
下一篇: 为什么Python 3.6以后字典有序并且效率更高?
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值