TypeError: 'NoneType' object is not callable in __del__() when exiting

Offen Anfängerfreundlich
#2,002 0 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
70/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
backend

Rechercherichtung

Suche nach der Definition der Klasse Llama, wahrscheinlich in einer Datei wie llama.py oder einem ähnlichen Kernmodul. Finde ihre del-Methode. Die Korrektur besteht darin, den Aufruf self.close() in einen try-except-Block einzuschließen, um Ausnahmen zu ignorieren. Teste dies, indem du ein einfaches Skript erstellst, das das Modell instanziiert und beendet, und stelle sicher, dass kein TypeError erscheint.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Prerequisites

  • I am running the latest code.
  • I followed the README.md.
  • I searched open/closed issues.
  • This is a reproducible error and fix.

Expected Behavior

When the model is closed or Python exits, it should clean up resources quietly.

Current Behavior

When using Llama(...), a crash occurs on exit:

TypeError: 'NoneType' object is not callable

This happens inside __del__() when it tries to close internal objects (e.g., ExitStack or model context) that are already None.

Environment and Context

  • Windows 11
  • Python 3.11.3
  • llama-cpp-python version: 0.3.8
  • Using quantized GGUF model via Llama(...)

Steps to Reproduce

  1. Load model via Llama(model_path=..., ...)
  2. Let script exit
  3. Observe destructor crash in logs

Recommended Fix

Wrap close() call in __del__() like so:

def __del__(self):
    try:
        self.close()
    except Exception:
        pass
Vorherrschende Sprache
Python
Sterne
10.6k
Forks
1.5k
Ø Merge
23 Min.
Gemergte PRs (30 T.)
1

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus abetlen/llama-cpp-python

Alle Issues in abetlen/llama-cpp-python

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.