Schrolli91 / BOSWatch

Python Script to process input data from rtl_fm and multimon-NG - multiple Plugin support
https://bwcc.boswatch.de
GNU General Public License v2.0
132 stars 60 forks source link

ImportError: No module named sleekxmpp #401

Closed budda85 closed 5 years ago

budda85 commented 5 years ago

Hallo, ich probiere gerade mir ein Plugin zu basteln, welches mir Meldungen per XMPP/Jabber schicken soll. Dazu hatte ich geplant SleekXMPP zu nehmen. Ich bin kompletter python-Anfänger!

Also habe ich mir einen Ordner SleekXMPP unter Plugins erstellt und dann das Plugin template kopiert und in SleekXMPP.py umbenannt.

Dann die Sleekxmpp-Git-Repo geklont und erstmal zwei Tutorial gemacht um zu gucken ob das senden überhaupt klappt. Echo-Bot Login, Senden, Logout Soo, das funktioniert alles wunderbar. Nun zum Problem: Ich hab dann mal das Plugin gefüllt, ob das jetzt richtig funktioniert ist erstmal egal, denn ich bekommen schon beim laden folgende Fehlermeldung:

02.08.2019 09:57:18 - pluginLoader [ERROR ] error loading plugin: SleekXMPP 02.08.2019 09:57:18 - pluginLoader [DEBUG ] error loading plugin: SleekXMPP Traceback (most recent call last): File "/opt/boswatch/includes/pluginLoader.py", line 32, in loadPlugins plugin = loadPlugin(i) File "/opt/boswatch/includes/pluginLoader.py", line 106, in loadPlugin return imp.load_module(plugin["name"], *plugin["info"]) File "/opt/boswatch/plugins/SleekXMPP/SleekXMPP.py", line 18, in import sleekxmpp ImportError: No module named sleekxmpp

Hier der Anfang meines Plugins:

import logging import sleekxmpp from includes import globalVars
from includes.helper import timeHandler from includes.helper import wildcardHandler from includes.helper import configHandler import sys

Ich hab zum testen auch mal probiert meine echobot.py oder send_client.py zu importieren, aber auch hier kommt der selbe Fehler. echobot und send_cient alleine funktionieren super. Eine config Eintrag habe ich auch gemacht.

Was mache ich falsch?

Danke und Gruß, Jan

f-kessler commented 5 years ago

Sieht so aus als hättest du das Modul "sleekxmpp" noch nicht im Python installiert. Schau mal unter https://github.com/fritzy/SleekXMPP "Get the Code".

budda85 commented 5 years ago

hmm, das hatte ich gestern schon probiert, bin mir aber nicht sicher, ob ich das wie heute als root gemacht habe. Aber daran hat es tatsächlich gelegen....Sorry. Aber wieso funktionieren die Beispiele ohne die installation und nur mit dem klonen repo?

f-kessler commented 5 years ago

Ich vermute, dass es in dem Paket was du heruntergeladen hast, ein Unterverzeichnis mit Namen "sleekxmpp" gibt und darin liegen die entsprechenden Module.

budda85 commented 5 years ago

genau, aber wieso kann das plugin nicht darauf zugreifen wenn ich den "sleekxmpp" Ordner mit in den Plugin Ordner kopiere?

flothi commented 5 years ago

Groß- und Kleinschreibung hast du beachtet?

budda85 commented 5 years ago

Ja. Hab es genauso importiert wie im Beispiel.

flothi commented 5 years ago

Ich meinte auch die der Ordner und der py-Datei im Filesystem

budda85 commented 5 years ago

Meine beiden Beispiele echobot.py und client_send.py liegen alle im selben Ordner wie mein SleekXMPP.py Plugin. Die beiden Beispiele gingen ohne das installieren von sleekxmpp über pip. Da hat es gereicht, das ich das GIT-Projekt in dem Ordner habe und einfach ein 'import sleekxmpp' gemacht habe. Nur das Plugin findet oder nutzt nicht das GIT-Projekt

Schrolli91 commented 5 years ago

Das liegt wohl daran, dass das Plugin selbst nur importiert wird. Stichwort absoluter- und relativer- Importweg.

Wenn man es per PIP installiert liegt es zentral und Python findet es von überall aus. Wenn das Modul allerdings aus einem Ordner raus importiert wird, müsste vermutlich auch der Importpfad der Lib relativ vom PluginLoader aus angegebenen werden - so meine Vermutung.

Aber mit dem PIP Install läuft es jetzt? Dann bitte Closen.

budda85 commented 5 years ago

Ja läuft. Danke