ModuleNotFoundError после запуска созданного .app файла созданного с помощью py2app : No module named 'email_to'
Mac M1: VSCode 1.69.2 + Anaconda 2.2.0 - Python 3.9.12 + установлен Python 3.10.5
Я пытался сделать *.app файл который использует библиотеку email_to, аналог smtplib + email.mime ( pip install smtplib + pip install email ) (до этого пробовал их, но там больший объем кода, а ошибка точно такая же).
Если создать *.app файл выполняющий отправку письма - то он не работает, хотя сам *.py этого проект свою задачу отрабатывает! Возможно нужно что-то дописать в setup.py, но я не знаю что именно, но пробовал, об этом напишу ниже.
Я решил пойти другим путем, и создать вторую **.py программу, которую превратил в **.app используя библиотеку py2app. Содержимое **.py:
from os import system, getcwd
if __name__ == "__main__":
try:
system("git clone https://github.com/syroiezhin/console2app")
system("python3 carrier.py") # carrier.py == *.py
system(f"rm -rf {getcwd()}")
except: pass
В результате при запуске **.app внутри него создается копия репозитория *.py, которую он же сам запускает, и после выполнения - удалит. Но, к сожалению, вылазит одна ошибка, о которой я сказал в начале, которую не получилось решить. Я пробовал:
- Пробовал в setup.py
install_requires=['email_to']добавить библиотеки, а так же в OPTIONS перечислить пакеты 'packages': ['email_to']. ожидаемого результата не увидел, ошибка продолжает меня мучать. - Пробовал
os.system("pip email_to")в*.py, который будет подгружаться и запускаться, и это тоже не дало результата; - Пробовал аналогичный способ с
smtplib + email.mimeаналогичная ошибка, но ругается на эти библиотеки; - Пробовал установить через
os.system-pip, чтобы установить эти библиотеки черезos.system, но он на меня продолжает ругаться, но уже и наpip, либо запрашивает пароль в терминале при запуске консольного приложения внутри**.app; - Пробовал без пакета
email_toв*.pyзапустить**.appфайл - работает без ошибок; - Пробовал запустить
*.pyфайл там где он лежит не запуская**.appфайл, зайдя внутрь, и он работает без ошибок; - Пробовал запускать
**.pyфайл не формируя для него**.app, и он тоже работает; - Когда я запускаю
*.pyфайл через запуск**.app, в котором записана командаsystem("python3 carrier.py"), то он постоянно пишет одну и ту же ошибку:
ModuleNotFoundError: No module named 'email_to'
Проблема возникает либо в подключении библиотек, чтобы *.py мог их использовать после копирования репозитория внутрь **.app файла. Указывает ошибку в месте вызова from email_to import Message, EmailServer. Либо он по разному запускает этот файл *.py, в ручную работает, а через **.app он не получает доступ к библиотекам установленым на mac. Какие есть идеи для решения?
добавил ещё:
Если не устанавливать с репозитория, а заведомо загрузить второй py-файл, а затем там его вызвать, то он выдает такую ошибку, заодно пример setup файла покажу, а формирую файл так:
python3 setup.py py2app --packages=PIL,email_to
Код setup.py:
from setuptools import setup
APP_NAME = "vrs"
APP = ['agent.py']
DATA_FILES = ['trap4scammers.py']
OPTIONS = {
'includes': ('os', 'PIL', 'email_to'),
'iconfile':'image.jpeg'
}
setup(
name=APP_NAME,
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app']
)
Ответы (1 шт):
вопрос с пакетом email_to остается открытым.
но мне удалось создать файл приложения без этой ошибки с библиотеками smtplib + email.mime!!! работает - вуху.
Я не знаю, что именно могло повлиять из всего, что я сделал, поэтому перечислю, что я сделал:
- в терминале обновил анаконду которую использую:
conda update --force conda
conda update anaconda
conda update conda
- обновил отдельно py2app и примыкающий к нему setuptool:
conda uninstall setuptools
conda install setuptools
conda update --force conda
- обновил этот элемент, который иногда меня ругал:
conda remove zeromq
conda install zeromq
- Еще добавил вот это, так как оно почему-то перестало работать, иногда использую для проверки скетча:
conda install jupyter
- Я также просмотрел эту статью.
Переустановил библиотеки
smtplib + email.mime, и они внезапно заработали. Пример скачивания:
sudo port search email
