Pyinstaller создает рабочий бинарный файл в контейнере, а не на сервере
У меня есть более крупный проект, основанный на Python. в нем есть несколько внешних модулей, таких как цемент, PIL или boto3, а также некоторые собственные кодированные модули. все работает нормально, как и должно.
Теперь моя идея состояла в том, чтобы собрать все приложение в один двоичный файл с помощью pyinstaller. поэтому я установил Docker-контейнер с Ubuntu 14 (той же версией и 64-битной, что и на сервере, где скрипт должен работать в рабочей среде). компиляция проекта была сделана с
pyinstaller --onefile app.py
После компиляции скрипт работает отлично - но только на докер-машинах (я проверял это на нескольких дистрибутивах и версиях linux, без проблем везде работает нормально).
После того, как я поместил скрипт на рабочий сервер, я получил сообщение об ошибке:
Error -3 from inflate: incorrect header check
Error decompressing PIL._imaging.so
Failed to write all bytes for PIL._imaging.so
Поэтому я поместил его на 2 других сервера, основанных на Linux Ubuntu, где я получил ту же ошибку.
Моя первая идея заключалась в том, что существует проблема с модулем, который был упомянут в сообщении об ошибке. Поэтому я создал действительно глупый демо-скрипт.py, который просто использовал модуль ядра os и распечатал несколько строк.
Опять же, двоичный файл работал нормально на каждом из моих док-контейнеров, но НЕ на серверах. Теперь я получил похожую ошибку, которая была:
Error -3 from inflate: incorrect header check
Error decompressing _bz2.so
Failed to write all bytes for _bz2.so
У кого-то была такая же проблема, или кто знает, в чем здесь проблема?
Моя версия Python, которую я использую для компиляции, - 3.3 (поддерживается Pyinstaller)
Большое спасибо заранее