学会这招,anki开发能少输n多代码:装个VS Code提词器


2.1.24 2.1.24 2.1.24版本开始,Anki支持代码补全和参数提示,搞定这俩功能,可以大幅提高开发效率。
代码补全(Code Completion):这个很好理解,就是你敲俩字母,编辑器就会弹出提示,选择你想敲的变量名、函数名等,按下回车键就会自动帮你补全。
或者你输入一个对象名后加点,自动显示可用的方法或属性。
参数提示(Parameter Hints):你敲个函数名,按下括号后,会弹出这个函数的参数类型提示。
这两项功能就像演讲者用的提词器一样,可以减少你的记忆负担。你演讲时得照着提词器把词念完不是?这个更先进,只需按下回车,后边不用念了,因此减少手动输入的代码量。
这俩功能在PyCharm实现起来很简单,可在VS Code就比较复杂了,这里讲下VS Code中的实现方法。

一、配置环境

要实现anki代码补完和参数提示,有两点硬性要求:

  • 使用64位的Python(use 64 bit version of Python)。
  • Python版本必须与Anki支持的版本相匹配(Python version must match a version the Anki version)。这里的匹配不说是Python版本必须得是Anki 内部使用的 Python 版本,而是要高于某某版本。所以,你下个最新的Python就是没问题的。

1.1 Anki支持的Python版本查询

方法一
Anki 的 aqt 库(开发依赖包)的 PyPI 页面会标注兼容的 Python 版本:

  1. 访问 aqt 的 PyPI 页面
  2. 查看 Requires Python 字段(如 >=3.9)。
    在这里插入图片描述

PyPI(Python Package Index)是 Python 的官方第三方软件包仓库,可以把它看成咱们手机里的应用商店。

方法二
此方法属于装叉之法。
在Anki主界面中按Ctrl+Shift+;打开调试控制台。
在控制台中输入:

import sys
print(sys.version)  # 输出 Anki 内部使用的 Python 版本

按CTRL+回车键,即可输出Anki 内部使用的 Python 版本。
在这里插入图片描述
方法二
在Anki中点击菜单【帮助】→【关于】,Python和PyQt的版本尽收眼底。
在这里插入图片描述

1.2 确认Python环境

打开终端(VS Code 内置终端或系统终端),输入以下命令检查Python信息:

python --version  # 查看版本(需与Anki兼容),比如Python 3.11.5
python -c "import struct; print(struct.calcsize('P') * 8)"  # 输出64表示64位

如果版本或位数不符,需从Python官网下载正确版本。

解释一下,这里所说的终端就是那个黑黑的命令行窗口,你可以在两个地方输入上面的命令。

  1. VS Code 内置终端
    在菜单中点击View>Timinal,或者按CTRL+`,即可打开VS Code的内置终端
  2. 系统终端
    系统终端就是命令提示窗口,也就是CMD窗口。
    可以在按Win+R打开对话框,输入cmd打开;或者在Windows底部的搜索框中搜索cmd,按回车打开。

1.3 使用虚拟环境

虚拟环境是一个独立的Python运行环境,允许项目有独立的依赖,不与其他项目冲突。比如,每个项目可以使用不同版本的库,各干各的,互不干扰。
为了确保插件使用的库版本与Anki本身或其他插件不冲突,建议使用虚拟环境,这是python开发的常规做法。
在终端输入以下命令:

python -m venv anki-venv    # 创建虚拟环境
anki-venv\Scripts\activate     # 激活(Windows)

第1行命令是创建虚拟环境,运行后会在你输入命令所在的目录中建立一个文件夹。比如,你在D盘根目录下输入命令,就会在D盘根目录下建一个名为“anki-venv”的文件夹。这个文件夹相当于一个工程文件夹,你后面就可以在在VS Code打开这个文件夹,在这个文件夹中进行开发。因为创建虚拟环境时需要往这个文件夹中放各种文件,所以这条命令需要你等一段时间才能运行完成。
第2行命令是激活虚拟环境。如果输入命令后在终端弹出的目录前带有(anki-venv),就表示已经激活并进入虚拟环境了。比如在D盘下键入上面的命令,显示如下图:
在这里插入图片描述

如果是Linux/macOS系统,改用下面的代码:

python -m venv anki-venv    # 创建虚拟环境
source anki-venv/bin/activate  # 激活(Linux/macOS)

二、安装依赖包

Anki的代码库本身未直接提供类型注解,但通过PyPI发布的aqt包附带了类型存根文件(.pyi)。安装后,IDE(如VS Code、PyCharm)能解析这些文件,实现智能补全和参数提示。
要实现这个功能,需要从PyPI安装特定的包。

在激活的虚拟环境中执行以下命令:

pip install --upgrade pip      # 升级 pip
pip install mypy aqt[qt6]      # 安装 mypy 和 aqt(Qt6 版本)

这两行代码完成以下操作:

  1. 升级pip工具
    第1行命令是将Python的包管理工具pip升级到最新版本,这也是安装包时的常规操作,因为某些新库需要新版本的pip才能正确安装。

  2. 安装开发依赖包
    第2行命令安装两个关键包:

    • mypy:静态类型检查工具,用于验证代码中的类型注解,帮助IDE提供更准确的补全和错误提示。
    • aqt:aqt是Anki的官方库,提供了访问Anki内部API的接口。
    • aqt[qt6][qt6]是“额外依赖”标记,表示安装支持Qt6的版本,因为Anki的GUI部分使用了Qt框架。若需Qt5,可替换为aqt[qt5]。安装这个库可以让开发者引用Anki的模块,从而在IDE中获得类型提示和代码补全。

如果网络较慢,可添加国内镜像源(如清华源):

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple mypy aqt[qt6]

安装文件还是比较大的,老金用pip install mypy aqt[qt6]没能安装成功,改用上面的国内镜像源不一会儿就安装完了。

三、配置 VS Code

3.1 安装必要扩展

Python:提供基础 Python 支持。
Pylance增强类型提示和代码补全。一般安装了Python 扩展就会自动安装这个扩展。
Mypy(可选):集成静态类型检查。实际测试不装这个也能实现代码自动补全和类型提示。
安装扩展的方法很简单,在VS Code中点击左下角的小齿轮图标,点击Extensions,然后在搜索框中输入要安装的扩展名,在列表中点击Install就可以了。
在这里插入图片描述
在这里插入图片描述

3.2 选择 Python 解释器

在VS Code菜单中选择File>Open Folder...(快捷键:CTRL+K CTRL+O),找到之前创建的anki-venv文件夹,打开。
Ctrl+Shift+P 打开命令面板,输入 Python: Select Interpreter
选择步骤 1 中创建的虚拟环境 anki-venv
在这里插入图片描述

3.3 启用类型检查

在 VS Code 设置(settings.json)中添加:

{
  "python.analysis.typeCheckingMode": "basic",  // 或 "strict"
  "python.analysis.diagnosticSeverityOverrides": {
    "reportMissingTypeStubs": "none"  // 忽略 aqt 的类型存根警告
  }
}

四、功能测试

现在所有工作完成了,可以测试一下。
新建 Python 文件,如 test_anki.py

from aqt import mw  # 导入 Anki 主窗口对象
from aqt.qt import QAction  # 导入 Qt 类

mw.<光标停留此处应触发补全>
action = QAction("Test", mw)  # 输入 QAction( 应提示参数类型

输入 mw. 后应弹出 Anki 主窗口的方法和属性提示。
在这里插入图片描述
输入 QAction( 应显示参数类型提示(如 parent: QObject)。
在这里插入图片描述
如有提示弹出,说明安装成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金创想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值