Ich bin mit Python wie gesagt nicht fit, aber main.py wird ja scheinbar nicht immer in /usr/share/cherytree/modules gesucht (der else-Teil der if-else-Abfrage aus dem Skriptauszug oben), sondern nur wenn die erste Bedingung der if-Abfrage eben nicht erfüllt ist. Dort wird nun scheinbar auf ein vorhandenes Verzeichniss modules geprüft (entweder im aktuellen Verzecihniss oder dort , wo das Tool als erstes hinverzweigt...). Evtl. ist das schon der Unterschied zu deinem testuser. Schau halt mal ob du ein python oder cherrytools (ggf. auch versteckt mit .(Punkt) davor) in deinem Normal-Home hast welches dann schon ein modules-Dir beinhaltet.
Soweit ich den Codeauszug verstehe würde dieses Verzecihniss dann eben zum Suchpfad hinzugefügt - und eben nicht das aus /usr/share/... (wo dann das main.py liegt).
Du kann ja mal testen, indem du (als root wohl) das Skript abänderst (Kopie vorher machen) zu:
import sys, os
# if os.path.isdir('modules'): MODULES_PATH = os.path.join(os.curdir, 'modules')
# else: MODULES_PATH = '/usr/share/cherrytree/modules/'
sys.path.insert(0, '/usr/share/cherrytree/modules/')
import main
Ich hoffe das # leitet auch in python einen Kommentar ein...
Dann mal schauen, ob dein Normaluser das dann ausführen kann...
Die .xesssion-errors Meldungen halte ich für irrelevant, typisches Fenstermanager-Rumblöken weil heutzutage jedes Pipifaxtool meint unbedingt was in die Logs pusten zu müssen....
//Edit: Ich logge, also bin ich (wichtig)! ;-) Ein Verhalten, was mir mehr und mehr auf den Keks geht....