2017-02-05 2 views
0

В настоящее время я пытаюсь создать автономный исполняемый файл Windows для моего сайта Python-Flask. Я пробовал cx_freeze и PyInstaller, но каждый раз, когда я сталкивался с проблемой импорта. В частности, я получаю следующее отслеживающий:ImportError для сообщения для пакета Flask - cx_freeze и Pyinstaller

* Restarting with stat 
* Debugger is active! 
* Debugger pin code: 941-349-200 
* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit) 
Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 12, in <module> 
    __import__(name + "__init__") 
    File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 24, in <module> 
    exec(code, m.__dict__) 
    File "runserver.py", line 7, in <module> 
    File "C:\Python27\lib\site-packages\flask\app.py", line 841, in run 
    run_simple(host, port, self, **options) 
    File "C:\Python27\lib\site-packages\werkzeug\serving.py", line 706, in run_simple 
    reloader_type) 
    File "C:\Python27\lib\site-packages\werkzeug\_reloader.py", line 263, in run_with_reloader 
    reloader.run() 
    File "C:\Python27\lib\site-packages\werkzeug\_reloader.py", line 144, in run 
    self.extra_files): 
    File "C:\Python27\lib\site-packages\werkzeug\_reloader.py", line 22, in _iter_module_files 
    filename = getattr(module, '__file__', None) 
    File "C:\Python27\lib\site-packages\email\__init__.py", line 79, in __getattr__ 
    __import__(self.__name__) 
ImportError: No module named message 

Оба этих инструментов есть метод для определения точных модулей для включения, в случае, если инструмент не в состоянии обнаружить все, что будет нужно. Я побежал cx_freeze с помощью следующей команды, среди прочего:

python cxfreeze runserver.py --target-dir DB --include-modules=message,email 

и pyinstaller с:

python pyinstaller.py runserver.py --debug --onedir --hidden-import=message --hidden-import=email 

, но ничего не получалось. Файлы электронной почты и сообщений .pyc существуют после того, как cx_freeze сгенерировал все, и их удаление вызывает другие ошибки, но по какой-то причине их недостаточно для этой части.

Я могу успешно запустить сайт через python самостоятельно, и, как вы можете видеть, ошибка возникает после того, как она запустила сайт.

Я изучаю эту ошибку, и было упомянуто несколько случаев ее упоминания, но всякий раз, когда она воспитывалась, никогда не было для нее решения - некоторые из них указали, что это может быть проблемой с способ werkzeug обрабатывает «ленивый импорт», но разговоры обычно заканчиваются словами «Не используйте флягу, если вы хотите это сделать». Это не жизнеспособное решение для меня, поэтому, если кто-нибудь сможет помочь, это будет очень признательно.

ответ

0

В скрытом импорте вы должны указать типы пантомимы электронной почты. Я сделал следующее в файле спецификации, и она работала

hiddenimports=['email.mime.message', 'email.mime.image', 'email.mime.text', 'email.mime.multipart', 'email.mime.nonmultipart', 'email.mime.base', 'email.mime.audio'] 

Или, что также работает устанавливает Debug на Ложное

Смежные вопросы