Python 3.7 zerschossen?

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
tlosert
User
Beiträge: 18
Registriert: Donnerstag 6. Mai 2021, 13:05

Hallo zusammen,

ich (immer noch Python-Neuling) habe mal wieder versucht ein kleines Programm zu schreiben, welches eMails versenden kann.
Dazu habe ich mir aus dem Web einige Beispiele herausgesucht, auch glaube auch Lib's etc. "nachinstalliert". Was genau kann ich nicht mehr sagen, war schon länger her.
Seitdem bekomme ich beim Starten von Python-Programme (über Konsole oder Thonny), welche nichts mit eMail-Versand zu tun haben eine Latte an Fehler / Infos angezeigt und das Programm startet nicht, was vorher aber immer lief.

Folgendes Programm lief "immer":

Code: Alles auswählen

#!/usr/bin/python
import sys
import time
import datetime
import telepot

TOKEN = '1345435345345:Agfhjhdjhrtgdfghhhtztjfgjdzurtgdrtttrtzzjtjhf--BEISPIEL'
MYID = 545345645645

time.sleep(30)
#TEXT = sys.argv[1]  # get text from command-line
now = datetime.datetime.now()

bot = telepot.Bot(TOKEN)
bot.sendMessage(MYID,"Neustart des Raspberry-PI um " + str(now.hour)+str(":")+str(now.minute)+str(":")+str(now.second))

#MessageLoop(bot, handle).run_as_thread()
#print ("Text gesendet: Neustart des Raspberry PI um " + str(now.hour)+str(":")+str(now.minute)+str(":")+str(now.second))

Will ich das Programm mit "python3 programmname.py" starten erhalte ich stets folgende Meldungen:

Code: Alles auswählen

Traceback (most recent call last):
  File "reboot.py", line 5, in <module>
    import telepot
  File "/home/pi/.local/lib/python3.7/site-packages/telepot/__init__.py", line 346, in <module>
    from . import api
  File "/home/pi/.local/lib/python3.7/site-packages/telepot/api.py", line 1, in <module>
    import urllib3
  File "/home/pi/.local/lib/python3.7/site-packages/urllib3/__init__.py", line 11, in <module>
    from . import exceptions
  File "/home/pi/.local/lib/python3.7/site-packages/urllib3/exceptions.py", line 3, in <module>
    from .packages.six.moves.http_client import IncompleteRead as httplib_IncompleteRead
  File "/home/pi/.local/lib/python3.7/site-packages/urllib3/packages/six.py", line 199, in load_module
    mod = mod._resolve()
  File "/home/pi/.local/lib/python3.7/site-packages/urllib3/packages/six.py", line 113, in _resolve
    return _import_module(self.mod)
  File "/home/pi/.local/lib/python3.7/site-packages/urllib3/packages/six.py", line 82, in _import_module
    __import__(name)
  File "/usr/lib/python3.7/http/client.py", line 71, in <module>
    import email.parser
  File "/home/pi/telegram/email.py", line 1, in <module>
    import smtplib
  File "/usr/lib/python3.7/smtplib.py", line 47, in <module>
    import email.utils
ModuleNotFoundError: No module named 'email.utils'; 'email' is not a package
Ich sehe hier den Zusammenhang mit dem "Ausprobieren" der eMail-Funktion unter python und glaube fast, dass ich mir etwas zerschossen habe.
Vielleicht ist es ja einfach zu "reparieren", ich hoffe es mal. Python3.7 habe ich auch schon versucht neu zu installieren, aber ich frage jetzt lieber mal die Experten, bevor mein Raspberry gar nichts mehr macht.
Gefühlt habe ich viele Version von Python auf dem PI?

"python3" auf der Konsole ergibt:
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

"python" auf der Konsole ergibt:
Python 2.7.16 (default, Oct 10 2019, 22:02:15)
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.


Danke ich Voraus,
Gruß
Thomas
Benutzeravatar
pillmuncher
User
Beiträge: 1482
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Dein Python-Programm darf nicht denselben Namen haben wie ein Modul, das du importierst. Wie soll Python die denn unterscheiden können?
In specifications, Murphy's Law supersedes Ohm's.
tlosert
User
Beiträge: 18
Registriert: Donnerstag 6. Mai 2021, 13:05

pillmuncher hat geschrieben: Montag 17. Mai 2021, 16:46 Dein Python-Programm darf nicht denselben Namen haben wie ein Modul, das du importierst. Wie soll Python die denn unterscheiden können?
Das aktuelle Programm heißt reboot.py, welches gestartet werden soll und die diverse Meldungen erscheinen. Das heißt, bei dem Aufruf beeinflusst die Datei email.py den Start das andere Programmes? Ich habe die Datei gelöscht aber das hat mit alledem nichts zu tun. Die Meldungen kommen nach wie vor. Habe ich dich so richtig verstanden?

Grüße Thomas
Benutzeravatar
pillmuncher
User
Beiträge: 1482
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Code: Alles auswählen

  File "/usr/lib/python3.7/http/client.py", line 71, in <module>
    import email.parser
  File "/home/pi/telegram/email.py", line 1, in <module>
    import smtplib
Damit man mehr sagen kann, solltest du die genaue Fehelrmeldung incl. gesamtem Traceback posten.
In specifications, Murphy's Law supersedes Ohm's.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@pillmuncher: das ist doch der komplette Traceback.
Benutzeravatar
pillmuncher
User
Beiträge: 1482
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Sorry, ja. War gedanklich ganz woanders.

Was ist das mit der Datei /home/pi/telegram/email.py? Woher kommt die? Benutzt du die, oder wird von irgendwas benutzt, was du importierst? Solange die gefunden wird, statt das email-Package aus der Standard Lib, wird es diesen Fehler geben.
In specifications, Murphy's Law supersedes Ohm's.
tlosert
User
Beiträge: 18
Registriert: Donnerstag 6. Mai 2021, 13:05

pillmuncher hat geschrieben: Montag 17. Mai 2021, 19:30 Sorry, ja. War gedanklich ganz woanders.

Was ist das mit der Datei /home/pi/telegram/email.py? Woher kommt die? Benutzt du die, oder wird von irgendwas benutzt, was du importierst? Solange die gefunden wird, statt das email-Package aus der Standard Lib, wird es diesen Fehler geben.
Naja, mit der Datei "email.py" habe ich versucht eine eMail versenden zu wollen. Ich habe die mal gelöscht, da es eh nicht funktionierte, aber es hatte keine Abhilfe gebracht.
Ich hatte aber noch zwei andere Dateien (email2.py und glaube ich email.pyc??), diese habe ich ebenfalls gelöscht und nun bekomme ich diese Meldungen nicht mehr und kann mein Programm "reboot.py" wieder normal starten. Komisch, nun scheint es wieder zu gehen, aber erklären kann ich mir dies nicht.

Hat jemand ggf. ein Beispiel für ein kleines Programm, mit dem ich einfach eine eMail aus Python heraus versenden kann?

Grüße
Thomas
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn Python “import email” auswertet, dann sucht es unter anderem nach email.py, und email.pyc, der kompilierten Variante. Darum mussten die beide weg.

Und hast du mal nach Python email versenden gesucht? Da ist das internet und dieses Forum voll von.
tlosert
User
Beiträge: 18
Registriert: Donnerstag 6. Mai 2021, 13:05

__deets__ hat geschrieben: Montag 17. Mai 2021, 22:00 Wenn Python “import email” auswertet, dann sucht es unter anderem nach email.py, und email.pyc, der kompilierten Variante. Darum mussten die beide weg.

Und hast du mal nach Python email versenden gesucht? Da ist das internet und dieses Forum voll von.
Bisher habe ich noch nichts brauchbaren in Sachen eMail versenden gefunden. Wenn Du ggf. einen Link hättest?
Grüße Thomas
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist sprichwörtlich der erste Link, wenn man “Python email senden” sucht.

https://codingworld.io/project/e-mails- ... mit-python

Was also soll das bedeuten, das du “nichts brauchbares” gefunden hast? Woran machst du das fest?
tlosert
User
Beiträge: 18
Registriert: Donnerstag 6. Mai 2021, 13:05

__deets__ hat geschrieben: Montag 17. Mai 2021, 22:42 Das ist sprichwörtlich der erste Link, wenn man “Python email senden” sucht.

https://codingworld.io/project/e-mails- ... mit-python

Was also soll das bedeuten, das du “nichts brauchbares” gefunden hast? Woran machst du das fest?
Guten Morgen,
ich hatte als Suchbegriff hier nur "email senden" eingegeben und dadurch nicht sinnhaft gesucht. Im Web gab es auch Beispiele, die aber nicht liefen. Vielleicht hatte ich auch zu wenig Geduld?!?
Ich habe mir dein Link mal angesehen und ausprobiert. Nach folgenden Änderungen geht es nun:

Code: Alles auswählen

import smtplib
#from email.MIMEMultipart import MIMEMultipart
from email.mime.multipart import MIMEMultipart
#from email.MIMEText import MIMEText
from email.mime.text import MIMEText
Ich danke dir
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Forums-Suche ist leider notorisch schlecht. Man muss das über Google & dann ggf einschränkend auf diese Webseite machen.
tlosert
User
Beiträge: 18
Registriert: Donnerstag 6. Mai 2021, 13:05

Danke hierzu nochmals, ich habe eine gute Lösung gefunden, es funktioniert nun wie es soll.
Grüße Thomas
Antworten