Řešení potíží¶
Diagnostický protokol editoru nese každý podstatný řádek. Ve Windows je v
%LOCALAPPDATA%/MTE/log/. Po spuštění editoru se podívejte do nejnovějšího souboru.
»Python plugins disabled«¶
Čtyři varianty; která z nich, říká přesná zpráva.
PluginHost: MTE_PYTHON is not set; falling back to PATH.¶
Neutrální — hostitel se chystá hledat Python v PATH. V pořádku, pokud po ní nenásleduje »no
Python interpreter found«.
PluginHost: MTE_PYTHON path '<value>' does not exist.¶
Nastavili jste MTE_PYTHON na cestu s oddělovačem adresářů, ale soubor na oné cestě chybí.
Náprava: nasměrujte ji na skutečný python.exe.
PluginHost: MTE_PYTHON='<name>' not found on PATH.¶
Nastavili jste MTE_PYTHON na holý název (bez oddělovače), ale ten název v PATH není. Náprava:
buď složku do PATH přidejte, nebo použijte výše uvedený tvar s úplnou cestou.
PluginHost: no Python interpreter found (…); Python plugins disabled.¶
V PATH není ani MTE_PYTHON, ani žádný z názvů obvyklých pro danou platformu (py.exe,
python.exe, python3.exe ve Windows; python3 na macOS a v Linuxu). Nainstalujte Python 3.9+ a
buď jej přidejte do PATH, nebo nastavte MTE_PYTHON.
Z téhož shellu, ze kterého jste editor spustili, ověřte, co PATH právě vidí:
(Get-Command py.exe -ErrorAction SilentlyContinue).Source
(Get-Command python.exe -ErrorAction SilentlyContinue).Source
»python worker script … not found«¶
Editor zaznamená:
Skript hostitele pracovníka (mte_python_host.py) není vedle spustitelného souboru. Stává se to
při spuštění sestavení editoru, u něhož byl krok POST_BUILD pro přípravu Python/ přeskočen.
Sestavte znovu:
Po sestavení potvrďte, že soubor existuje:
Modul je uvedený, ale nenačtený¶
Otevřete stránku Zásuvné moduly (Předvolby → Zásuvné moduly). Běžné příčiny:
| Příznak | Řádek v protokolu | Příčina |
|---|---|---|
Vedle názvu značka o neshodě apiVersion |
PythonPluginBackend: not loading '…': apiVersion does not match host 1. |
Váš plugin.json deklaruje jinou apiVersion, než jakou běžící editor podporuje. |
| Modul vypadá zašedle | PythonPluginBackend: '…' is disabled; listed but not loaded. |
Někdo jej vypnul na stránce Zásuvné moduly. Zapněte jej a restartujte. |
| Zcela chybí | PythonPluginBackend: skipping '…': module '…/main.py' does not declare a top-level 'def register(...)'. |
Statická sonda váš modul odmítla. Přesuňte register na nejvyšší úroveň (sloupec 0). |
| Zcela chybí | PythonPluginBackend: skipping '…': module file '…' is missing or unreadable. |
plugin.json.module je "main", ale žádné main.py vedle něj není. |
| Zcela chybí | PythonPluginBackend: skipping '…': plugin.json missing required field 'id'. |
Přidejte id. |
Příkaz se nespustí¶
Klikli jste na položku nabídky nebo stiskli zkratku, ale nic se nestalo.
- Hledejte řádky
[python:<your.id>] …z vašehoctx.log.info(...). Pokud chybí, zavolání se k pracovníkovi nikdy nedostalo. - Hledejte řádky
[worker stderr] …. Výjimky uvnitř vašeho zavolání končí tam. - Potvrďte, že id příkazu ve vašem volání
add_itemodpovídácommand(id=...)doslova — porovnání řetězců je přesné.
Chyby »worker died«¶
Hostitel zaznamená:
Podproces Pythonu skončil. Nad tímto řádkem hledejte stderr od pracovníka — Python tiskne výpisy
zásobníku na stderr a hostitel je předává jako [worker stderr] …. Pád téměř vždy odpovídá
nezachycené výjimce ve register() nebo v zavolání, které se rekurzivně vrátilo do rozhraní C v
Pythonu.
Zotavte se opravou kódu a restartem editoru. Hostitel spadlého pracovníka automaticky nerestartuje.
Příprava virtuálního prostředí selhala (modul uvedený, ale nenačtený)¶
Modul, který deklaruje pyRequires, dostane při prvním spuštění připravené virtuální prostředí.
Když to selže, nese protokol důvod:
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 ...
Běžné příčiny: při prvním spuštění není síť, překlepnutý požadavek, balíček bez wheelu pro verzi
Pythonu daného uživatele. Příčinu odstraňte a restartujte — příprava se opakuje při každém
spuštění, dokud neuspěje (prostředí se označí za hotové až na konci). Chcete-li vynutit čisté
sestavení znovu, smažte <AppLocalData>/PluginVenv/<plugin-id>/. Stroje bez sítě mohou místo toho
dodat předem sestavené venv/ uvnitř balíčku — viz
Balení.
Instalátor můj .mteplugin odmítl¶
Každé odmítnutí přichází s konkrétní zprávou v okně; ty běžné:
| Zpráva říká… | Náprava |
|---|---|
chybí povinné pole 'module' |
Přidejte do plugin.json "module": "main". |
| žádný modul Pythonu (soubor .py) | Archiv nemá vůbec žádné .py — zazipovali jste správnou složku? |
neobsahuje deklarovaný modul Pythonu 'X.py' |
module v plugin.json neodpovídá názvu souboru v archivu. |
nedeklaruje def register(...) na nejvyšší úrovni |
Totéž pravidlo jako při hledání: def register( musí začínat ve sloupci 0 souboru <module>.py. |
| míří na verzi rozhraní N | Sestavte znovu proti aktuální apiVersion (viz plugin.json). |
| nebezpečná cesta / příliš velké / příliš mnoho souborů | Archiv narazil na bezpečnostní pojistku — zabalte jej prostě znovu (žádné položky s .., po rozbalení pod 256 MiB). |
Balíček se ověřuje proti pracovní kopii, takže odmítnutá instalace se stávajícího modulu nikdy nedotkne.
Vůbec se nic nezaznamenává¶
Potvrďte, že je vaše obsluha skutečně nainstalována. register(ctx) běží právě jednou na
modul a spuštění editoru. Není-li register definována na nejvyšší úrovni modulu, odmítne modul
statická sonda dřív, než se vůbec načte (viz »Modul je uvedený, ale nenačtený« výše).
Přidejte do svého register řádek při startu:
Pokud to v protokolu nevidíte, pracovník váš register nespouští — důvod hledejte v dřívějších
protokolech.
Kam se podívat dál¶
- Protokol na straně editoru:
%LOCALAPPDATA%/MTE/log/… - Stderr pracovníka: tentýž protokol, označený
[worker stderr] - Reference: rozhraní
ctx, události,plugin.json - Poznámky k návrhu:
PYTHON_PLUGIN_ARCHITECTURE.md(kořen repozitáře)