-
Notifications
You must be signed in to change notification settings - Fork 631
Description
Describe the bug
Errbot running on python 3.11 in docker, unable to load a python library into a plugin
To Reproduce
plugin code:
from lib.chatutils import ChatUtils
from errbot import BotPlugin, botcmd
chatutils = ChatUtils()
class MyTest(BotPlugin):
"""Perform system level commands"""
@botcmd()
def am_i_admin(self, msg, _):
admin = chatutils.is_admin(msg)
return f"{chatutils.handle(msg)} {admin}"
python library (in plugins/lib/chatutils.py)
import os
import re
class ChatUtils:
"""
A collection of common utilities used throughout the repo
"""
def is_admin(self, msg, admins):
if self.handle(msg) in admins:
return True
return False
def handle(self, msg):
try:
return str(msg.frm).split("/")[1]
except:
return msg.frm
Expected behavior
Errbot should load the plugin.
** Actual behavior **
2024-04-22 19:54:18,251 INFO errbot.core Some plugins failed to start during bot startup:
Traceback (most recent call last):
File "/errbot-data/lib/python3.11/site-packages/errbot/plugin_manager.py", line 289, in _load_plugins_generic
plugin_classes = plugin_info.load_plugin_classes(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/errbot-data/lib/python3.11/site-packages/errbot/plugin_info.py", line 100, in load_plugin_classes
spec.loader.exec_module(modu1e)
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/errbot-data/eks-ops/errbot/plugins/mytest/mytest.py", line 5, in <module>
import lib.chatutils
ModuleNotFoundError: No module named 'lib.chatutils'; 'lib' is not a package
Error: MyTest failed to activate: 'NoneType' object has no attribute 'is_activated'.
Environment (please complete the following information):
- Errbot version: 6.2.0
- OS version: Debian 12
- Python version: Python 3.11.2
- Using a virtual environment: yes
- Using Docker: yes
Additional context
Config.py includes a reference to plugins, and sys.path via errbot returns:
Path: ['/errbot-data/code', '/errbot-data/code', '/errbot-data/bin', '/usr/lib/python311.zip', '/usr/lib/python3.11', '/usr/lib/python3.11/lib-dynload', '/errbot-data/lib/python3.11/site-packages', '/errbot-data/lib/python3.11/site-packages/errbot/storage', '/errbot-data/eks-ops/errbot/backends/err-backend-slackv3/src/slackv3', '/errbot-data/lib/python3.11/site-packages/errbot/core_plugins', '/errbot-data/eks-ops/errbot/plugins/mytest', '/errbot-data/eks-ops/errbot/plugins/ops', '/errbot-data/eks-ops/errbot/plugins/Git', '/errbot-data/eks-ops/errbot/plugins']
This includes (last entry) the plugins/ dir in the search path.