Python içe aktarma modülleri hatası


0

Ubuntu'da python ile ilgili bir sorunum var. Standart paketin bir parçası olan bazı modüllerin alınamadığı anlaşılıyor. Python örneğinde aşağıdaki satırları almaya çalışıyorum:

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

Kod aşağıdaki hatayı oluşturur:

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

Dosyalara kabuk yoluyla erişebildiğim için tüm paketler varsayılan olarak düzgün bir şekilde yüklendi, ancak doğrudan bir dosyayı çalıştırırken:     python email.py


Hangi Python sürümünü kullanıyorsunuz? PYTHONPATH'iniz nedir? MIMEMultipart modülü PYTHONPATH'de mi?
— mtak

Yer fıstığı galerisi, ancak programınızı "email.py" olarak adlandırıyorsanız, yeniden adlandırın. Verilen bir modülle aynı isimli betikler, import.
— Anaksunaman

Yanıtlar:


0

Modülleri ve afferent alt modüllerini doğru belirtmediğinizi düşünüyorum. Yapmanız gerekenler:

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

Kullandım help python işlevi, "PAKET İÇERİĞİ" bölümünde e-posta modülünün ne içerdiğini kontrol etmek için kullanılır. MIMEmultipart bir sınıftır mime:

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

Düzenle:

SADECE Python2'deki belirli bir modülde bir nesnenin tam olarak nerede bulunduğunu bulmanın kolay bir yolu (python3 bununla çalışmıyor gibi):

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

Senin durumunda böyle bir şey:

getattr(__import__("email"), "MIMEMultipart").__dict__["__name__"]
getattr(__import__("email"), "MIMEText").__dict__["__name__"]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.