运送Python标准库的一部分

时间:2017-06-14 23:10:00

标签: python anki

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

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

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

来自Anki docs on addons

  

标准模块

     

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

所以我的问题是:我采取了哪些措施将标准Python模块threadingQueue与我的插件捆绑在一起?

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

2 个答案:

答案 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_cleanerimage-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>

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