gmpy2与一些python库在vscode下没有自动补全的一种缓解方案

news2024/11/25 22:56:14

经过一定的研究,该问题的原因初步判断是gmpy2这个库天生没有把补全的函数doc说明附在pip包中。且因gmpy2是由C编译而来,以dll或so的形式作为动态链接库给python调用,这意味着无法从源码薅到可用的源码注释。
接下来先讲解决方案,再简单进行问题分析说明。

解决方案:

省流:从pycharm的python stubs文件里薅一份gmpy2.py塞到本地gmpy2目录下
1. 找到pycharm的gmpy2文档文件
在pycharm安装gmpy2后,任意使用gmpy2函数如图:

import gmpy2
gmpy2.invert()

在这里插入图片描述
可见pycharm拥有对gmpy2的定义。
这里右键通过搜寻定义找到文档文件与其目录,如图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里,我们就得到了一份gmpy2.py的源码注释文件。
2. 找到本地gmpy2路径
接下来打开本地环境的gmpy2文件夹
linux一般在usr/local/lib/pythonxx/dist_packages路径下,可通过pip install 快速定位,如图:
在这里插入图片描述
在这里插入图片描述
成功导入后在vscode中查看:
在这里插入图片描述
在这里插入图片描述

问题分析:

pip库对比

import个opencv库,vscode能很顺利地得到函数注释并进行补全,可见不是环境问题对三方库不识别:
在这里插入图片描述
右键能跳转到定义文件:
在这里插入图片描述
那么对比下同目录的cv2库和gmpy2库。
cv2:
在这里插入图片描述
gmpy2(这里的gmpy2是后加的):在这里插入图片描述
可见cv2这个库多了相当多详细的py格式的声明文件,这个不再举例。
查看二者共有的__init__.py文件:
在这里插入图片描述
可见gmpy2的这方面简直烂完了

查看源码和官网

很容易发现,官网是有一份完整的gmpy2函数文档的。因此还是有希望能让vscode好好对其完成自动补全。而在官网中进行信息搜集,也容易找到源码仓库:
源码仓库
但放眼一看,全是c呀:
在这里插入图片描述
且结合之前找到的库目录,gmpy2实际上是以链接库的形式提供调用。那么这就很难办了。

在pycharm发现新的突破口

这时其实就有点僵硬,自动补全和函数注释还是有点关键的,没有它万万不可。
接着我想到机子里还有个pycharm,我便想试试pycharm有没有什么奇妙配置能对这个gmpy2进行自动补全的分析。没想到还真能,自带的。
于是我想通过定义跳转找到相关的文档文件,因为如果文件是以py等格式存在的话,就有可能直接放入本地的库目录中,被vscode解析。再换句话说——要是pycharm使用的pip源不同,直接拥有gmpy的函数注释,岂不美哉?
于是就在python stubs目录下找到了相关文件=w=。再一搜,python stubs似乎是pycharm主推的一种注释和补全体系。知道了这点,以后在相似情况下都试一下从pycharm移植了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

el-table样式错乱解决方案

bug: 图片的椭圆框住的地方,在页面放大缩小之后就对不齐了。 原因: 主要原因是当你对页面放大缩小的时候,页面进行了重构,页面的宽高及样式进行了变化,但是在这个更新的过程中,table的反应并没…

Python爬虫之协程

Python爬虫之协程 为什么要用协程 协程声明 await aiohttp aiofiles 案例修改 案例完整代码 为什么要用协程 轻量级:协程是轻量级的执行单元,可以在同一个线程中并发执行。相比于多线程或多进程,创建和切换协程的开销更小。高效利用资源&…

78.网游逆向分析与插件开发-背包的获取-背包类的C++还原与获取物品名称

内容参考于:易道云信息技术研究院VIP课 上一个内容:77.网游逆向分析与插件开发-背包的获取-物品类的C还原-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&…

影响ETL数据传输性能的9大因素及主流ETL应对策略

前言 现在很多企业在选择ETL工具时都特别关注ETL的数据传输性能,而有很多开源ETL工具都说自已是性能如何如何快,而事实上数据传输性能是不是这些工具说的那样快呢? 数据传输性能受制于哪些因素呢?企业在自身数据库性能受制的情况…

Redis(七)复制

文章目录 是什么功能配置配主库不配从库权限细节 案例配置文件修改 一主二仆固定配置文件主从问题命令操作手动指定 薪火相传反客为主复制原理和工作流程存在问题 是什么 https://redis.io/docs/management/replication/ 就是主从复制,master以写为主,S…

农业气象站的工作原理!

TH-NQ8农业气象站的工作原理是基于传感器技术、数据采集技术、数据传输技术和数据处理技术等多个环节相互配合而实现的。 首先,农业气象站通过各种传感器对不同的气象指标进行实时监测和记录。传感器的种类有很多,包括温度传感器、湿度传感器、风速传感…

3dmax渲不出模型是什么原因---模大狮模型网

3DMax无法渲染模型可能有多种原因。以下是一些常见的问题和解决方法: 材质设置错误:检查模型的材质设置是否正确,包括纹理贴图的路径、UV映射是否正确等。确保材质的属性设置正确,如颜色、反射率、透明度等。 灯光设置问题&#…

vue3中form对象无法赋值问题

加上 async await还是不行 有时候对象的值死活赋不上值,这时候可以看下赋值的对象变量名是否和页面组件中的ref相同,如果存在相同,则参照以下解决方案: 问题定位:setup 中抛出的变量不能与页面组件中的 ref 重复 解决…

第40集《佛法修学概要》

请大家打开讲义第一百零六页。我们讲到大乘的果位。大乘佛法的修学跟小乘最大的差别,主要在于一句话,就是大乘佛法是一种“称性起修,全修在性”。大乘佛法的功德第一个“称性”,这个“称”就是随顺。我们一念明了的心,…

Java 异常及处理|Error、Throwable、Exception

目录 一、Java 异常概述 二、异常类 1、Throwable: 1.1 Throwable 类的常用方法包括: 1.2 创建和抛出 Throwable 2、Error: 2.1 Error 与异常处理的关系 3、Exception: 3.1 如何处理 Exception 方式1 、往外抛&#xff1…

Qt6入门教程 10:菜单栏、工具栏和状态栏

目录 一.菜单栏 1.Qt Designer 1.1添加菜单和菜单项 1.2添加二级菜单 1.3给菜单和菜单项添加图标 1.4给菜单项添加功能 2.纯手写 二.工具栏 1.Qt Designer 1.1添加工具栏按钮 1.2工具栏的几个重要属性 2.纯手写 三.状态栏 1.Qt Designer 2.纯手写 用Qt Creator新…

Unity - 简单音频视频

“Test_04” 音频 使用AudioTest脚本控制Audio Source组件,在脚本中声明"music"和"se"之后,在unity中需要将音频资源拖拽到对应位置。 AudioTest public class AudioTest : MonoBehaviour {// 声明音频// AudioClippublic AudioC…

Raspbian安装云台

Raspbian安装云台 1. 源由2. 选型3. 组装4. 调试4.1 python3-print问题4.2 python函数入参类型错误4.3 缺少mjpg-streamer可执行文件4.4 缺失编译头文件和库4.5 python库缺失4.6 图像无法显示,但libcamera-jpeg测试正常4.7 异常IOCTL报错4.8 Git问题 5. 效果5.1 WEB…

CSS文本外观属性内容(知识点1)

知识引入 使用HTML可以对文本外观进行简单的控制,但是效果并不理想,为此CSS提供了一系列的文本外观样式属性,具体如下。 color:文本颜色 color属性用于定义文本的颜色,其取值方式有以下三种。 (1)预定义…

springboot中一些注解

springboot中一些注解 1:项目启动时会去扫描启动的注解,一般是启动时就想要被加载的方法: 2:springBoot中MSApplication启动类的一些其他注解: EnableAsync:这是一个Spring框架的注解,它用于开启方法异步调用的功能。当…

RTDETR 引入 UniRepLKNet:用于音频、视频、点云、时间序列和图像识别的通用感知大卷积神经网络 | DRepConv

大卷积神经网络(ConvNets)近来受到了广泛研究关注,但存在两个未解决且需要进一步研究的关键问题。1)现有大卷积神经网络的架构主要遵循传统ConvNets或变压器的设计原则,而针对大卷积神经网络的架构设计仍未得到解决。2)随着变压器在多个领域的主导地位,有待研究ConvNets…

Linux 一键部署influxd2-telegraf

influxd2前言 influxd2 是 InfluxDB 2.x 版本的后台进程,是一个开源的时序数据库平台,用于存储、查询和可视化时间序列数据。它提供了一个强大的查询语言和 API,可以快速而轻松地处理大量的高性能时序数据。 telegraf 是一个开源的代理程序,它可以收集、处理和传输各种不…

Docker容器引擎(1)

目录 一.Docker 概述 为什么要用到容器? docker是什么? 容器与虚拟机的区别? docker的三个核心概念: 二.安装docker 安装依赖包: 安装 Docker-CE并设置为开机自动启动: 查看 docker 版本信息&#…

制作高端的电子杂志神器推荐

根据市场调查数据显示,越来越多的消费者开始青睐电子杂志这种阅读方式。相比传统纸质杂志,电子杂志具有更高的阅读体验、更便捷的分享和传播方式以及更环保的阅读方式。此外,越来越多的企业也开始重视电子杂志的宣传作用,将其作为…

植物神经功能紊乱到底是什么疾病?今天来告诉你原因和治疗方法!

首先,什么是植物神经功能紊乱?简单来说,植物神经是自主神经系统的一部分,它控制着自主生理反应,比如呼吸、心跳、血压、消化系统等。当这个系统出现紊乱时,就会导致植物神经功能紊乱。咨询:tdhy…