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)

Большое спасибо заранее

0 ответов

Другие вопросы по тегам