Erro de módulos de importação do Python

0

Eu tenho um problema com o python no Ubuntu. Parece que alguns módulos que fazem parte do pacote padrão não podem ser importados. Exemplo em python estou tentando importar as seguintes linhas:

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

O código gera o erro abaixo:

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

Todos os pacotes foram instalados corretamente por padrão, já que posso acessar os arquivos via shell, mas não diretamente ao executar um arquivo:     python email.py

Yule Msee
fonte
Qual versão do Python você está usando? Qual é o seu PYTHONPATH? O módulo MIMEMultipart está no PYTHONPATH?
mtak
Galeria de amendoim, mas se você está chamando seu programa "email.py", renomeie-o. Scripts que são nomeados da mesma forma que uma bagunça de módulo fornecida com o import.
Anaksunaman

Respostas:

0

Eu acho que você não está especificando os módulos e os sub-módulos aferentes corretamente. Você deveria realmente fazer:

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

Eu usei o help função do python para verificar o que o módulo de email contém em "CONTEÚDO DA EMBALAGEM" e deduziu, por exemplo, que MIMEmultipart é uma classe de mime:

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

Editar:

Uma maneira fácil de encontrar exatamente onde um objeto está em um determinado módulo APENAS no Python2 (o python3 parece não funcionar com isso) é:

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

No seu caso é algo como:

getattr(__import__("email"), "MIMEMultipart").__dict__["__name__"]
getattr(__import__("email"), "MIMEText").__dict__["__name__"]
AnythingIsFine
fonte