From 2af4681082513c70f2d2ad746f991d88b60c1779 Mon Sep 17 00:00:00 2001 From: santaspeen Date: Thu, 25 Jul 2024 17:32:00 +0300 Subject: [PATCH] [+] Support pip packages --- src/core/__init__.py | 4 ++-- src/modules/PluginsLoader/__init__.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/core/__init__.py b/src/core/__init__.py index 7a2d992..834a036 100644 --- a/src/core/__init__.py +++ b/src/core/__init__.py @@ -9,8 +9,8 @@ __title__ = 'KuiToi-Server' __description__ = 'BeamingDrive Multiplayer server compatible with BeamMP clients.' __url__ = 'https://github.com/kuitoi/kuitoi-Server' -__version__ = '0.4.6' -__build__ = 2459 # Я это считаю лог файлами +__version__ = '0.4.7' +__build__ = 2462 # Я это считаю лог файлами __author__ = 'SantaSpeen' __author_email__ = 'admin@kuitoi.su' __license__ = "FPA" diff --git a/src/modules/PluginsLoader/__init__.py b/src/modules/PluginsLoader/__init__.py index 8f5584c..d97437c 100644 --- a/src/modules/PluginsLoader/__init__.py +++ b/src/modules/PluginsLoader/__init__.py @@ -7,8 +7,11 @@ # Licence: FPA # (c) kuitoi.su 2023 import asyncio +import importlib import inspect import os +import subprocess +import sys import types from contextlib import contextmanager from pathlib import Path @@ -98,6 +101,18 @@ class KuiToi: self.log.debug("Requests add_command") return console.add_command(key, func, man, desc, custom_completer) + def install_and_import(self, package): + self.log.debug(f"Import package: {package}") + try: + # Попробуйте импортировать пакет + importlib.import_module(package) + except ImportError: + # Если пакет не установлен, установите его + subprocess.check_call([sys.executable, "-m", "pip", "install", package]) + finally: + # Попробуйте еще раз импортировать пакет + return importlib.import_module(package) + class PluginsLoader: