errbot icon indicating copy to clipboard operation
errbot copied to clipboard

ModuleNotFoundError: No module named 'lib.chatutils'; 'lib' is not a package (Python 3.11)

Open greenaar opened this issue 1 year ago • 1 comments

Describe the bug Errbot running on python 3.11 in docker, unable to load a python library into a plugin

To Reproduce plugin code:

import lib.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)
        chatutils.reply(bot_self=self, msg=msg, body=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):
        return str(msg.frm).split("/")[1]

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.

greenaar avatar Apr 22 '24 21:04 greenaar

Further context. Same code, duplicate errbot running under Python 3.10.12 - this does not occur.

Same code, running on Python 3.11.2 not inside a docker container, still occurs.

greenaar avatar Apr 23 '24 14:04 greenaar

Still no idea. Is this a python issue? A debian 12 issue? Something else? Next attempt will have to be something other than debian 12, to see if it's related to that particular bundling.

I guess imports like mentioned https://errbot.readthedocs.io/en/latest/user_guide/plugin_development/basics.html#python-submodules aren't that common?

greenaar avatar May 13 '24 14:05 greenaar

Ok, further information -- this does not occur on Ubuntu 24.04, running python 3.12.3. It also doesn't occur on Ubuntu 22.04 running 3.10.12.

Something debian specific? Going to spin up a debian 12 host to validate.

greenaar avatar May 13 '24 14:05 greenaar

Ok. it's not debian OR python related.

When loading the slack backend, this occurs. When using the Text or Discord backends, it does not. I'm moving this ticket to https://github.com/errbotio/err-backend-slackv3/issues/105

greenaar avatar May 13 '24 16:05 greenaar