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

经过一定的研究,该问题的原因初步判断是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移植了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue3路由报错解决方法

报错: 解决办法: createWebHashHistory是否为 createWebHashHistory()方法 //指定路由模式为哈希模式 修改:改为方法就行了

春节声量高涨213%!如何撬动过年市场?小红书数据洞察入场玩家

春节将临,网上讨论声量渐起。近来关于新年的讨论层出不穷,春运、春晚、放假回家的大学生“德华”……人们开始为新春做准备。前两天,小红书牵手春晚,登上热门。可以预见的是,今年小红书与春节话题将深度绑定&#xff0…

JUC并发编程-集合不安全情况以及Callable线程创建方式

6. 集合不安全 1&#xff09;List 不安全 //java.util.ConcurrentModificationException 并发修改异常&#xff01; public class ListTest {public static void main(String[] args) {List<Object> arrayList new ArrayList<>();for(int i1;i<30;i){new Thr…

【书生·浦语大模型实战营06】《OpenCompass 大模型评测》学习笔记

《OpenCompass 大模型评测》 文档&#xff1a;OpenCompass大模型评测教程 1、主观评测 2、提示词工程 李华每周给2个不同的朋友写一封3页的信&#xff0c;一周写两次。他一年总共写了多少页的信? 李华每周给2个不同的朋友写一封3页的信&#xff0c; 一周写两次。他一年总共…

[代码随想录2]51单片机1T/12T到底怎么选?

为什么说51单片机怎么选&#xff1f; 时至今日&#xff0c;44年来51单片机自强不息&#xff0c;怎么描述它&#xff0c;堪称控制芯片中的王者&#xff01;&#xff01;&#xff01; 假设你21岁大学毕业进入社会&#xff0c;交社保交到今天恭喜你成功退休了214465 传统即标准5…

【docker】安装 CentOS

查看可用的 CentOS版本 docker search centOS拉取 CentOS最新镜像 docker pull centos:latest 查看本地镜像 docker images运行容器 docker run -itd --name centos-demo centos查看进程 docker ps进入centos容器 docker exec -it centos-demo /bin/bash停止容器 docker …

w23靶场安装

一、实验环境 服务器&#xff1a;phpstudyv8.1.13 靶场&#xff1a;Bees二、实验目的 提供一个靶场环境 三、实验步骤 bees靶场安装 1.启动小皮的apache和mysql 2.在小皮V8.1.1.3版本上创建bees网站&#xff0c;选择的php版本最好在5.x&#xff0c;不然会有php解析错误。…

ubuntu 安装protobuf

apt 安装 sudo apt install protobuf-compiler 编译安装 – 方式1 资料链接&#xff1a;ubuntu环境 安装ncnn_ubuntu ncnn_jbyyy、的博客-CSDN博客 git clone https://github.com/google/protobuf.git cd protobuf git submodule update --init --recursive ./autogen.sh …

性能优化-OpenCL kernel 开发

「发表于知乎专栏《移动端算法优化》」 本文主要介绍OpenCL的 Kernel&#xff0c;包括代码的实例以及使用注意的详解。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开发基础教…

Leetcode刷题笔记题解(C++):670. 最大交换

思路&#xff1a; 假设数字 9923676 从右边找最大的数字的下标maxindex&#xff0c;然后向左边寻找小于最大数字的数的下标&#xff0c;直到找到最左边&#xff0c;交换两者得出新的数字&#xff0c;比如从左到右递减的数字如9621则不需要变化&#xff0c;在寻找中记录这种数…

如何查看Linux CPU占有率

目录 1、top 2、htop 3、vmstat 4、mpstat 5、iostat 查看嵌入式设备CPU占有率是评估系统资源使用情况的重要方式。 在Linux系统中&#xff0c;有多种方法可以查看CPU占有率&#xff0c;这里介绍几种常用的命令行工具。 1、top 这是最常用的命令之一&#xff0c;它提供了…

语义分割常用评价指标

在图像处理领域中&#xff0c;语义分割是很重要的一个任务。在实际项目开发中,评估模型预测效果以及各指标的含义对于优化模型极为重要。 本文将主要评价指标的计算算法进行了详细说明,并加上注释解释每个指标的含义。这对理解各指标背后的数学原理以及能否在实践中应用或许有…

​​快速排序(四)——挖坑法,前后指针法与非递归

目录 ​一.前言 二.挖坑法 三.前后指针法 四.递归优化 五.非递归 六.结语 一.前言 本文我们接着上篇文章的重点快排&#xff0c;现在继续讲解对快排优化的挖坑法&#xff0c;前后指针法以及非递归方法&#xff0c;下面是上篇文章快排链接&#xff1a;https://mp.csdn.net…

小程序系列--9.生命周期

1. 什么是生命周期&#xff1f; 2. 生命周期的分类 3. 什么是生命周期函数 4. 生命周期函数的分类 5. 应用的生命周期函数 6. 页面的生命周期函数

Android反编译第一神器JADX,超40k star

Android反编译第一神器JADX&#xff0c;超40k star 引言 jadx是一个非常强大的工具&#xff0c;可以将Android应用程序反编译为可读的Java代码。它可以帮助开发人员和安全专家分析应用程序&#xff0c;并了解其中的工作原理和实现细节。 jadx主要包含2款工具jadx及jadx-gui&a…

spring-framework6.x版本源码构建

6.x.修改gradle仓库构建 IDEA版本及gradle构建设置 在gradle指定仓库地址/wrapper/dists/找到与gradle wrapper相对应的gradle版本&#xff0c;在gradle的init.d/目录下新建init.gradle文件&#xff0c;内容如下&#xff1a; allprojects{repositories {mavenLocal()maven { …

Pytorch自动求导机制

PyTorch框架可以帮我们计算好反向传播&#xff0c;需要求导的&#xff0c;可以手动定义 示例&#xff1a; #先构造一个随机的三行四列矩阵&#xff0c;两种方法都可以#方法1 x torch.randn(3,4,requires_gradTrue) x#方法2 x torch.randn(3,4) x.requires_gradTrue x #再构…

数据的存储

目录 1 -> 数据类型的介绍 1.1 -> 类型的基本归类 2 -> 整型在内存中的存储 2.1 -> 原码、反码、补码 2.2 -> 大小端介绍 3 -> 浮点型在内存中的存储 3.1 -> 浮点数存储规则 1 -> 数据类型的介绍 基本内置类型有&#xff1a; char /…

函数默认参数:更优雅的函数设计与调用技巧

C中一个强大而优雅的特性——函数默认参数。它为我们提供了更灵活、简洁的函数设计与调用方式&#xff0c;让我们一起揭开这个令人惊叹的编程技巧的神秘面纱吧&#xff01; 1. 默认参数是什么&#xff1f; 首先&#xff0c;让我们了解一下什么是默认参数。在C中&#xff0c;函…

【JAVA】我和我的第一个“对象”相遇

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-zAjv1fTLGQmnqncy {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…