如何将Python中的某些标准模块与我的代码一起发送?
我正在为Anki编写附加组件,我需要Queue
标准库中的threading
和Python2.7
个模块。
当我尝试启动Anki时,我得到ImportError: No module named Queue
。我认为这是因为Anki没有提供完整的Python解释器,如果我缺少任何标准模块,我会自己捆绑它们。
来自Anki docs on addons:
标准模块
Anki只附带运行程序所需的标准模块 - 不包括Python的完整副本。因此,如果您需要使用Anki未附带的标准模块,您将需要 将它与您的附加组件捆绑在一起。
所以我的问题是:我采取了哪些措施将标准Python模块threading
和Queue
与我的插件捆绑在一起?
请注意,Anki中的附加组件只是具有某些额外模块的Python脚本。
答案 0 :(得分:3)
来自Anki doc:
对于简单的单文件加载项,您可以上传.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文件并上传压缩文件。
<binary support files>
可以是您想要的模块。
如果您想了解其他人如何做,请在Github上结帐html_cleaner和image-occlusion-enhanced 。
答案 1 :(得分:0)
对于任何其他想知道如何导入.so文件的人(我使用的是尝试import parser
的库,发现parser.__file__
是.so文件的人),答案是相同的作为.py文件:
创建目录(mkdir parser
),将.so文件复制到该目录(cp parser.cpython-37m-x86_64-linux-gnu.so parser/
),然后将__init__.py
添加到目录(touch parser/__init__.py
)。 / p>
这几乎可以肯定不是跨平台的,但它可以满足我的需求。