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.