【问题标题】:Shipping part of Python standard library运送 Python 标准库的一部分
【发布时间】:2017-06-14 23:09:59
【问题描述】:

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

我正在为 Anki 编写一个插件,为此我需要来自 Python2.7 标准库的 Queuethreading 模块。

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

来自 Anki docs on addons:

标准模块

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

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

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

【问题讨论】:

  • 同样的问题,真是令人沮丧。
  • 嘿,我的回答解决了你的问题吗?如果是这样,您能否将我的解决方案标记为正确的解决方案?谢谢。

标签: python anki


【解决方案1】:

来自 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 文件压缩并上传。

&lt;binary support files&gt; 可以是您想要的模块。

如果你想看看其他人是怎么做的,请在 Github 上查看 html_cleanerimage-occlusion-enhanced

【讨论】:

    【解决方案2】:

    对于想知道如何导入 .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)。

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

    【讨论】:

      猜你喜欢
      • 2015-09-26
      • 2014-04-07
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多