1

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

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

我不断收到错误消息,说我正在导入的模块(例如 pygame)丢失。

我已经按照 Giorgan Borca-Tasciuc 的建议在这里完成了

并将文件夹包含在模块文件和初始化.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')

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

我究竟做错了什么?

非常感谢帮助。

4

2 回答 2

0

分享一个从bs4导入BeautifulSoup的经验。希望能帮到你。

下载beautifulsoup4源码,解压后将“bs4”文件夹复制到Anki Add-On文件夹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/
于 2018-10-24T07:13:54.760 回答
0

根据文档

标准模块

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

现在,您如何捆绑附加组件?文档说:

共享插件

对于一个简单的单文件插件,您可以上传 .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

要上传多文件插件,请压缩文件夹和加载程序 .py 文件并上传 zip。

所以你应该把你需要的模块放在一个支持文件夹中,然后从那里导入它们。就像是:

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

ma.py可以是一种配置和myaddon加载文件,并且__init__.pymyaddon正确)可以from . import pygame

于 2018-10-19T14:46:30.863 回答