Felsökning¶
Redigerarens diagnostiklogg innehåller varje relevant rad. På Windows ligger den i
%LOCALAPPDATA%/MTE/log/. Titta på den nyaste filen efter att ha startat
redigeraren.
«Python plugins disabled»¶
Fyra varianter; det exakta meddelandet säger vilken.
PluginHost: MTE_PYTHON is not set; falling back to PATH.¶
Neutralt — värden är på väg att leta efter Python i PATH. Bra, om det inte följs
av «no Python interpreter found».
PluginHost: MTE_PYTHON path '<value>' does not exist.¶
Du satte MTE_PYTHON till en sökväg med en katalogavskiljare, men filen på den
sökvägen saknas. Åtgärd: peka på den riktiga python.exe.
PluginHost: MTE_PYTHON='<name>' not found on PATH.¶
Du satte MTE_PYTHON till ett naket namn (utan avskiljare), men det namnet finns
inte i PATH. Åtgärd: lägg till mappen i PATH, eller använd formen med
fullständig sökväg ovan.
PluginHost: no Python interpreter found (…); Python plugins disabled.¶
Varken MTE_PYTHON eller något av plattformens standardnamn (py.exe,
python.exe, python3.exe på Windows; python3 på macOS/Linux) finns i PATH.
Installera Python 3.9+ och lägg antingen till det i PATH eller sätt
MTE_PYTHON.
Kontrollera vad PATH ser just nu, från samma skal som du startade redigeraren
från:
(Get-Command py.exe -ErrorAction SilentlyContinue).Source
(Get-Command python.exe -ErrorAction SilentlyContinue).Source
«python worker script … not found»¶
Redigeraren noterar:
Arbetarens värdskript (mte_python_host.py) ligger inte bredvid den körbara filen.
Det händer när man kör ett redigerarbygge vars POST_BUILD-steg som ställer i ordning
Python/ hoppades över. Bygg om:
Bekräfta att filen finns efter bygget:
Insticksmodulen listad men inte inläst¶
Öppna sidan Insticksmoduler (Inställningar → Insticksmoduler). Vanliga orsaker:
| Symtom | Rad i loggen | Orsak |
|---|---|---|
Etikett om avvikande apiVersion bredvid namnet |
PythonPluginBackend: not loading '…': apiVersion does not match host 1. |
Din plugin.json deklarerar en annan apiVersion än den körande redigeraren stöder. |
| Insticksmodulen ser gråtonad ut | PythonPluginBackend: '…' is disabled; listed but not loaded. |
Någon inaktiverade den på sidan Insticksmoduler. Aktivera den igen och starta om. |
| Helt frånvarande | PythonPluginBackend: skipping '…': module '…/main.py' does not declare a top-level 'def register(...)'. |
Den statiska sonden avvisade din modul. Flytta register till toppnivån (kolumn 0). |
| Helt frånvarande | PythonPluginBackend: skipping '…': module file '…' is missing or unreadable. |
plugin.json.module är "main" men det finns ingen main.py bredvid. |
| Helt frånvarande | PythonPluginBackend: skipping '…': plugin.json missing required field 'id'. |
Lägg till id. |
Kommandot utlöses inte¶
Du klickade på menyposten eller tryckte på kortkommandot men inget hände.
- Leta efter rader
[python:<your.id>] …från dinctx.log.info(...). Saknas de nådde återanropet aldrig arbetaren. - Leta efter rader
[worker stderr] …. Undantag inuti ditt återanrop hamnar där. - Bekräfta att kommando-id:t i ditt anrop av
add_itemstämmer ordagrant med dittcommand(id=...)— strängjämförelsen är exakt.
Fel om «worker died»¶
Värden noterar:
Python-underprocessen tog slut. Leta ovanför den raden efter arbetarens stderr —
Python skriver spårningar till stderr och värden vidarebefordrar dem som
[worker stderr] …. En krasch motsvarar nästan alltid ett ofångat undantag i
register() eller i ett återanrop som gick tillbaka in i Pythons C-API.
Återhämta dig genom att rätta koden och starta om redigeraren. Värden startar inte om en kraschad arbetare automatiskt.
Iordningställandet av venven misslyckades (insticksmodulen listad men inte inläst)¶
En insticksmodul som deklarerar pyRequires får en virtuell miljö iordningställd
vid sin första start. Misslyckas det innehåller loggen skälet:
PluginHost: 'org.example.x' needs a venv (no venv provisioned yet).
PythonRuntime: provisioning venv at '...' (1 requirement(s)); ...
PluginHost: venv provisioning for 'org.example.x' failed: pip install
failed: ... No matching distribution found for no-such-package ...
Vanliga orsaker: inget nätverk vid första starten, ett felstavat krav, ett paket
utan wheel för användarens Python-version. Rätta orsaken och starta om —
iordningställandet försöker igen vid varje start tills det lyckas (venven stämplas
som komplett först på slutet). För att tvinga fram en ren ombyggnad tar du bort
<AppLocalData>/PluginVenv/<plugin-id>/. Maskiner utan nätverk kan i stället
leverera en förbyggd venv/ inuti paketet — se
Paketering.
Installeraren avvisade min .mteplugin¶
Varje avvisning kommer med ett specifikt dialogmeddelande; de vanliga:
| Meddelandet säger… | Åtgärd |
|---|---|
det obligatoriska fältet 'module' saknas |
Lägg till "module": "main" i plugin.json. |
| ingen Python-modul (.py-fil) | Arkivet har ingen .py alls — komprimerade du rätt mapp? |
innehåller inte den deklarerade Python-modulen 'X.py' |
module i plugin.json stämmer inte med filnamnet i arkivet. |
deklarerar inte något def register(...) på toppnivå |
Samma regel som vid upptäckten: def register( måste börja på kolumn 0 i <module>.py. |
| siktar på API-version N | Bygg om mot den aktuella apiVersion (se plugin.json). |
| osäker sökväg / för stort / för många filer | Arkivet utlöste ett säkerhetsskydd — packa om det enkelt (inga poster med .., < 256 MiB uppackat). |
Paketet valideras mot en tillfällig kopia, så en avvisad installation rör aldrig en befintlig insticksmodul.
Inget alls loggas¶
Bekräfta att din hanterare verkligen är installerad. register(ctx) körs exakt en
gång per insticksmodul per start av redigeraren. Är register inte definierad på
modulens toppnivå avvisar den statiska sonden modulen innan den ens läses in (se
«Insticksmodulen listad men inte inläst» ovan).
Lägg till en startrad i din register:
Ser du inte den i loggen kör arbetaren inte din register — leta i de tidigare
loggraderna efter skälet.
Var du tittar härnäst¶
- Logg på redigerarsidan:
%LOCALAPPDATA%/MTE/log/… - Arbetarens stderr: samma logg, märkt
[worker stderr] - Referens:
ctx-API:t, Händelser,plugin.json - Designanteckningar:
PYTHON_PLUGIN_ARCHITECTURE.md(repositoriets rot)