0

如何将 Python 中的一些标准模块与我的代码一起发布?

我正在为 Anki 编写一个附加组件,为此我需要标准库中的Queue模块threadingPython2.7

当我尝试启动 Anki 时,我得到ImportError: No module named Queue. 我认为这是因为 Anki 没有附带完整的 Python 解释器,如果我缺少任何标准模块,我将自己捆绑它们。

来自插件上的 Anki文档

标准模块

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

所以我的问题是:我应该采取哪些步骤来捆绑标准 Python 模块threading以及Queue我的附加组件?

请注意,Anki 中的附加组件只是具有某些额外模块可用的 Python 脚本。

4

2 回答 2

3

来自 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。

<binary support files>可以是您想要的模块。

如果您想看看其他人是如何做到的,请在 Github 上查看 html_cleaner和image -occlusion-enhanced 。

于 2017-06-20T12:45:51.100 回答
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)。

这几乎可以肯定不是跨平台的,但它满足了我的需求。

于 2020-06-11T04:14:27.477 回答