我正在为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')
当然,我不必包含每个子文件使用的每个可能的模块。
我在做什么错了?
不胜感激。
答案 0 :(得分:0)
标准模块
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/