我正在为SRS Anki(2.1x(编写我自己的附加组件。
我的脚本在Anki之外运行,但我想从Anki中的工具栏运行它,以便对Anki调用的卡执行操作。
我不断收到错误,说我正在导入的模块(如pygame(丢失了。
我已经做了Giorgan Borca Tasciuc在这里建议
并包括带有模块文件的文件夹和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')
当然,我不必包含每个子文件使用的所有可能的模块。
我做错了什么?
非常感谢您的帮助。
根据文档:
标准模块
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
要上传多文件加载项,请压缩文件夹和loader.py文件并上传zip。
因此,您应该将所需的模块放在支持文件夹中,然后从那里导入。类似于:
myaddon/pygame.zip
myaddon/__init__.py
ma.py
ma.py
可以是一种配置和加载myaddon
文件,__init__.py
(myaddon
本身(可以是from . import pygame
。
分享从bs4导入BeautifulSoup的体验。希望能帮助你。
下载beautifulsoup4源代码,解压缩代码并将"bs4"文件夹复制到Anki Add-On文件夹C:UsersAdminAppDataRoamingAnki2addons
中。然后重新启动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/