Вопрос Запуск скрипта python в IDLE работает, но в терминале я получаю экземпляр SMTP без атрибута «send_message»


У меня есть сценарий, который приводит к отправке электронного письма с помощью smtplib.SMTP python.

Когда я запускаю его из IDLE, он отправляет сообщение без сообщений об ошибках. Я пытаюсь различными способами автоматизировать его с помощью crontab, чтобы каждый день ходить в 10 утра.

Если я запустил его с терминала, я получаю сообщение об ошибке:

$ python endofmonth.py
Traceback (most recent call last):
  File "endofmonth.py", line 74, in <module>
    s.send_message(msg)
AttributeError: SMTP instance has no attribute 'send_message'

Почему он работает в IDLE, но не при вызове с терминала?


2
2018-05-07 15:38


происхождения




ответы:


send_message метод для SMTP класс был добавлен в Python 3.2, Вы вызываете сценарий для запуска с использованием python который является символической ссылкой для Python 2. Поскольку send_message метод не определен в Python 2, вы получаете AttributeError,

Чтобы преодолеть это, вам нужно вызвать свой скрипт, используя Python 3.2 или новее. Запустите его как:

python3 endofmonth.py

и это сработает.

Скорее всего, вы используете версию IDLE Python 3, которая является причиной ее работы.


2
2018-05-07 15:51