Skip to content

[BUG] Built-in plugins not loading in Deluge 2.2.0 (zipped .egg files vs extracted directories) #236

Description

@advallespir

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

All built-in plugins (Label, Stats, Scheduler, Blocklist, AutoAdd, etc.) fail to load with warnings:

20:25:14 [WARNING] Cannot enable non-existent plugin Label
20:25:14 [WARNING] Cannot enable non-existent plugin Stats
20:25:14 [WARNING] Cannot enable non-existent plugin Scheduler
20:25:14 [WARNING] Cannot enable non-existent plugin Blocklist
The plugins exist as files in /usr/lib/python3.12/site-packages/deluge/plugins/ but Deluge's scanner skips them.

Expected Behavior

Built-in plugins should load normally and appear in Preferences → Plugins, as they did in Deluge 2.1.1.

Steps To Reproduce

Pull lscr.io/linuxserver/deluge:latest (2.2.0-r2-ls365)
Create container with default settings
Add any of Label/Stats/Scheduler/Blocklist to enabled_plugins in core.conf
Start container — plugins fail to load
Root cause: Deluge 2.2.0 pluginmanagerbase.py line ~118 checks os.path.isdir(item_path) for .egg entries. The built-in plugins are zipped .egg files (not directories), so the isdir check returns False and they're skipped entirely.

Workaround: Extract the eggs as directories:

bash

docker exec sh -c "
cd /usr/lib/python3.12/site-packages/deluge/plugins/
for egg in *.egg; do
if [ -f "$egg" ]; then
mkdir -p "${egg}.tmp"
unzip -o "$egg" -d "${egg}.tmp"
rm "$egg"
mv "${egg}.tmp" "$egg"
fi
done
"
docker restart
Suggested fix: Extract the built-in plugin eggs during image build so they're directories with EGG-INFO/ inside.

Environment

OS: Debian 12 (Raspberry Pi OS)

CPU architecture

arm64

Docker creation

deluge:
  image: lscr.io/linuxserver/deluge:latest
  container_name: Deluge-Rpi5
  environment:
    - PUID=1000
    - PGID=100
    - TZ=Etc/UTC
    - DELUGE_LOGLEVEL=warning
    - DOCKER_MODS=linuxserver/mods:universal-package-install
    - INSTALL_PIP_PACKAGES=python-telegram-bot>=20.0
    - PYTHONPATH=/lsiopy/lib/python3.12/site-packages
  restart: always
  labels:
    autoheal-app: true
  ports:
    - 8112:8112
    - 6881:6881
    - 6881:6881/udp
  logging:
    driver: "json-file"
    options:
      max-size: "50m"
      max-file: "10"

Container logs

Linuxserver.io version: 2.2.0-r2-ls365
Build-date: 2026-02-13T11:07:36+00:00
20:04:38 [WARNING ][deluge.pluginmanagerbase:1672] Cannot enable non-existent plugin Label
20:04:38 [WARNING ][deluge.pluginmanagerbase:1672] Cannot enable non-existent plugin Stats
20:04:38 [WARNING ][deluge.pluginmanagerbase:1672] Cannot enable non-existent plugin Scheduler
20:04:38 [WARNING ][deluge.pluginmanagerbase:1672] Cannot enable non-existent plugin Blocklist
Connection to 127.0.0.1 58846 port [tcp/*] succeeded!
Connection to 127.0.0.1 8112 port [tcp/*] succeeded!
[ls.io-init] done.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Issues

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions