@Leksplayqes

Executable для библиотеки puresnmp?

. Необходимо собрать проект в единый exe файл. На данный момент, все собирается и работает идеально, до того момента, когда приходится использовать злосчастную puresnmp. Без сборки, соответственно все работает, не запинаясь.

Итак, уменьшенный до нельзя кусок кода, который уже не функционирует в собранном виде:

from puresnmp import Client, V2C, PyWrapper
from puresnmp.types import Integer
import json
import asyncio

async def QL_up_down(mode):
     if mode == "up":
            QLmvment = await client().set(oids()["syncOID"]["modeQL"], Integer(1))
     else:
            QLmvment = await client().set(oids()["syncOID"]["modeQL"], Integer(0))
     return QLmvment

def oids():
     with open("OIDstatus.json", "r") as jsonoid:
            oid = json.load(jsonoid)
     return oid

def client():
     client = PyWrapper(Client(oids()["ipaddr"], V2C("private")))
     return client

def QLmodeDOWN():
     snmpQL_set = asyncio.run(QL_up_down("down"))
     assert snmpQL_set == 0

if __name__ == "__main__":
     QLmodeDOWN()


Результатом этого куска в собранном виде, является данное исключение:

puresnmp.exc.UnknownMessageProcessingModel: Namespace 'puresnmp_plugins.mpm' did not contain a plugin with identifier 1. Known identifiers: []. See the 'puresnmp' documentation on plugins.

Разобраться самостоятельно и пофиксить это я не смог, прошу помощи из зала.

В exe собирал с помощью pyinstaller и py2exe.
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
Какую команду выполняете при сборке с использованием pyinstaller?

Пробовали собирать exe с указанием прямого пути до puresnmp?
pyinstaller --onefile --paths=C:\Users\Username\AppData\Local\Programs\Python\Python39\Lib\site-packages\puresnmp script.py

Еще вариант, можно использовать hook файлы, в которых указываются пути до файлов, который должны быть включены в сборку, например:
from PyInstaller.utils.hooks import collect_submodules, collect_data_files

hiddenimports = collect_submodules('puresnmp')
datas = collect_data_files('puresnmp')

При сборке, необходимо передать hook файл следующей командой:
pyinstaller --onefile --additional-hooks-dir=абсолютный_путь_до_hook.py script.py
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы