Anki(SRS软件)附加组件/模块

时间:2018-07-22 23:22:56

标签: python python-3.x anki

我正在为SRS Anki(2.1x)编写自己的附件。

我的脚本可以在Anki之外运行,但我想从Anki的工具栏中运行它,以对Anki调用的卡片执行操作。

我总是收到错误消息,说我要导入的模块(例如pygame)丢失了。

我按照Giorgan Borca-Tasciuc的建议here

并在文件夹中包含模块文件和 init .py文件以扫描文件夹。因此,例如,我的文件夹“ pygame”与代表插件脚本的文件夹位于同一文件夹内。两者都有 init .py文件。

但是,似乎总是会找到一些未导入的模块。例如,现在找不到内置的Python包“ array”。

我还试图用我的插件脚本中的行来破解它:

sys.path.append('/Users/user/AnacondaProjects/Anki/')
sys.path.append('/Users/user/Library/Application%20Support/Anki2/addons21/playback/')
sys.path.append('/Users/user/Library/Application%20Support/Anki2/addons21/playback/pygame')
sys.path.append('/anaconda3/lib/python3.6/site-packages')

当然,我不必包含每个子文件使用的每个可能的模块。

我在做什么错了?

不胜感激。

2 个答案:

答案 0 :(得分:0)

根据the documentation

  

标准模块

     

Anki仅随附运行该程序所需的标准模块-不包括Python的完整副本。因此,如果您需要使用Anki随附的标准模块,则需要将其与附件捆绑在一起。

现在,您如何捆绑附加组件? The documentation说:

  

共享加载项

     

对于简单的单文件加载项,您可以上传.py文件。对于多文件加载项,请创建一个充当Python包的子文件夹,并创建一个导入该包的小.py文件。以日语支持插件为例,结构如下:

japanese/file1.py
japanese/file2.py
japanese/__init__.py # can be empty; marks the folder as a package
japanese/<binary support files>
jp.py
     

要上传多文件加载项,请压缩文件夹和loader .py文件并上传zip。

因此,您应该将所需的模块放在支持文件夹中,然后从那里导入它们。像这样:

myaddon/pygame.zip
myaddon/__init__.py
ma.py

ma.py可以是一种配置和加载myaddon文件,而__init__.py(适当的myaddon)可以from . import pygame

答案 1 :(得分:0)

分享从bs4导入BeautifulSoup的体验。希望能帮助您。

下载beautifulsoup4源代码,解压缩代码并将“ bs4”文件夹复制到Anki附加文件夹C:\Users\Admin\AppData\Roaming\Anki2\addons\。然后重新启动Anki。我的akPlugin.py脚本可以从bs4中找到BeautifulSoup。

λ ls -al addons
total 56
drwxr-xr-x 1 Admin 197121     0 Aug 30 09:12 ./
drwxr-xr-x 1 Admin 197121     0 Oct 22 18:28 ../
-rw-r--r-- 1 Admin 197121 37794 Jul 18 10:11 akPlugin.py
drwxr-xr-x 1 Admin 197121     0 Sep 29  2015 bs4/