Поставляемая часть стандартной библиотеки Python

Как отправить некоторые стандартные модули из Python вместе с моим кодом?

Пишу дополнение для Anki, для которого мне нужны Queue и threading модули из Python2.7 стандартной библиотеки.

Когда я пытаюсь запустить Anki, я получаю ImportError: No module named Queue. Я предполагаю, что это связано с тем, что Anki не поставляется с полным интерпретатором Python, и если мне не хватает каких-либо стандартных модулей, я должен собрать их самостоятельно.

Из документов Anki по надстройкам:

Стандартные модули

Anki поставляется только со стандартными модулями, необходимыми для запуска программы — полная копия Python не включена. По этой причине, если вам нужно использовать стандартный модуль, не включенный в Anki, вам нужно будет связать его с надстройкой.

Итак, мой вопрос: какие шаги мне предпринять, чтобы связать стандартные модули Python threading и Queue вместе с моей надстройкой?

Обратите внимание, что надстройки в Anki — это просто скрипты Python, в которых доступны определенные дополнительные модули.


person julka    schedule 14.06.2017    source источник
comment
Та же проблема, это очень расстраивает.   -  person Giorgian Borca-Tasciuc    schedule 16.06.2017
comment
Привет, мой ответ решил твою проблему? Если да, то не могли бы вы отметить мое решение как правильное? Спасибо.   -  person Giorgian Borca-Tasciuc    schedule 21.06.2017


Ответы (2)


Из документа Анки:

Для простой однофайловой надстройки вы можете загрузить файл .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> может быть модулями, которые вы хотите.

Оформить заказ html_cleaner и image-occlusion-enhanced на Github, если вы хотите увидеть, как это делают другие.

person Giorgian Borca-Tasciuc    schedule 20.06.2017

Для всех, кому интересно, как импортировать файл .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).

Это почти наверняка не кроссплатформенность, но для моих нужд это сработало.

person Sam Maynard    schedule 11.06.2020