Błąd importowania modułów w języku Python

0

Mam problem z pythonem na Ubuntu. Wygląda na to, że niektórych modułów, które są częścią standardowego pakietu, nie można zaimportować. Przykład w python próbuję zaimportować następujące wiersze:

from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEBase import MIMEBase
from email import encoders

Kod generuje następujący błąd:

from email.MIMEMultipart import MIMEMultipart
ImportError: No module named MIMEMultipart

Wszystkie pakiety zostały poprawnie zainstalowane domyślnie, ponieważ mogę uzyskać dostęp do plików za pośrednictwem powłoki, ale nie bezpośrednio podczas wykonywania pliku: python email.py

Yule Msee
źródło
Jakiej wersji Pythona używasz? Jaka jest twoja PYTHONPATH? Czy moduł MIMEMultipart jest w PYTHONPATH?
mtak
Galeria orzeszków ziemnych, ale jeśli nazywasz swój program „email.py”, zmień jego nazwę. Skrypty o takich samych nazwach jak dany moduł bałagan z import.
Anaksunaman

Odpowiedzi:

0

Myślę, że nie określasz poprawnie modułów i podmodułów aferentnych. Powinieneś zrobić:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

Użyłem helpfunkcji python, aby sprawdzić, co zawiera moduł e-mail w „TREŚCI PAKIETU” i wydedukowałem na przykład, że MIMEmultipartjest to klasa mime:

help("email")
help("email.mime.multipart")

Edytować:

Prostym sposobem na znalezienie, gdzie dokładnie znajduje się obiekt w danym module TYLKO w Pythonie 2 (python3 nie działa z tym), jest:

getattr(__import__("<module_name>"), "<object_name>").__dict__["__name__"]

W twoim przypadku jest to coś takiego:

getattr(__import__("email"), "MIMEMultipart").__dict__["__name__"]
getattr(__import__("email"), "MIMEText").__dict__["__name__"]
AnythingIsFine
źródło