Распространить скрипт python в предварительно скомпилированном байт-коде + все необходимые библиотеки

Я сделал скрипт (один файл) на python для своего клиента, программа прошла успешно, и теперь ее нужно распространить среди 12 сотрудников моего клиента.

Скрипт, который я сделал, использует много библиотек (импорт), некоторые из них вообще не популярны, поэтому вот вопрос:

Есть ли способ распространять мою программу, уже скомпилированную в байт-коде? Таким образом, пользователи могут запустить его, просто выполнив «python myProgram.pyc» или просто «myProgram.pyc» (если он имеет свойство + x), я знаю, что это вполне возможно в Java путем компиляции библиотек внутри файла JAR, это есть что-нибудь подобное для python?

Пожалуйста, не рекомендуйте мне py2exe, так как он находится далеко от того, что я хочу, или другие подобные инструменты, я просто хочу распространять пакет со всеми необходимыми библиотеками, уже предварительно скомпилированными в байт-коде, поэтому конечным пользователям не нужно беспокоиться о установка libs, pip, github, пользовательских вещей или чего-либо еще. Надеюсь, вы сможете мне помочь, иначе мне придется портировать весь проект на Java.


person Diego Diaz Valdez    schedule 16.03.2016    source источник
comment
Возможный дубликат Есть ли способ встроить зависимости внутри скрипта Python?   -  person William Price    schedule 16.03.2016
comment
Нет, так как принятый ответ в этой ветке относится к 2012 году и предлагает устаревший метод, я полагаю, что теперь в 2016 году должен быть более простой, быстрый и безопасный инструмент, чтобы делать то, что я хочу   -  person Diego Diaz Valdez    schedule 16.03.2016


Ответы (1)


Если ваш клиентский компьютер сотрудников работает под управлением Windows, перейдите на py2exe http://py2exe.org/

Если Mac использует py2app, https://pypi.python.org/pypi/py2app/

cx_Freeze http://cx-freeze.sourceforge.net/ является кроссплатформенным, и он должен плюнуть out исполняемый файл, который будет работать на любой ОС с установленным Python.

PyInstaller http://www.pyinstaller.org/ тоже хорош.

Однако эти методы не компилируются и, следовательно, улучшают производительность во время выполнения. Скорее способ распространять свой скрипт как единый исполняемый файл со всеми необходимыми модулями.

Вы можете использовать скомпилированный файл .pyc с оболочкой вокруг него для выполнения и упаковать его как один исполняемый файл. Тем не менее, улучшение производительности при этом является спорным.

EDIT: Это было давно, недавно началось с cython, и это может быть правдоподобным решением этой проблемы. Если не все, определение типов переменных должно делать то, что задано в вопросе.

person Bussller    schedule 16.03.2016
comment
Пожалуйста, прочитайте мой вопрос, я хочу любой ценой избежать py2exe или py2app, я хочу распространять пакет, подобный JAR/ZIP, со всеми встроенными в него необходимыми библиотеками, чтобы пользователи могли просто запускать мою программу, не устанавливая ничего другого. Я искал несколько дней, и пока ничего не получилось, теперь я переношу свое приложение на Java, чертов python. - person Diego Diaz Valdez; 16.03.2016
comment
Привет @Diego, pyinstalker умирает так же. Он упаковывает все в автономный сжатый пакет. При двойном щелчке или запуске be ./ в Linux не требуется никаких внешних зависимостей. py2exe и py2app делают то же самое. Может быть, вы можете попробовать, прежде чем портировать на java. Я использовал py2app, pyinstaller и CX_freeze для нескольких своих приложений на Python и работал. Я смог распределить, где пользователь может работать, просто запустив. Не требует никакой установки. - person Bussller; 16.03.2016
comment
Это вы должны установить py2exe для создания единственного автономного исполняемого файла, а не вашего клиента, если вы неправильно поняли - person Bussller; 16.03.2016
comment
Опять же, преобразование в двоичный файл не является хорошим решением, оно делает скрипт очень тяжелым с множеством бесполезных зависимостей, сотрудникам придется устанавливать среду выполнения VB C на своих машинах с Windows, если не сказать больше ... pyinstaller даже не работает с моим сценарием, вероятно, потому, что для пользовательских библиотек и py2exe требуется Python 3.3, мой вывод - Python, хотя и хорош для быстрой разработки, он СОХРАНИТ для распространения специально для технических специалистов, я никогда не буду использовать его снова. - person Diego Diaz Valdez; 17.03.2016
comment
Даже у меня были пользовательские библиотеки. Но смог упаковать их с дистрибутивом с правильным файлом конфигурации. Я не понимаю, что вы подразумеваете под сверхтяжелым множеством бесполезных зависимостей. Хотя ваше решение переключиться на какой-либо другой язык является личным, насколько мне известно, их можно упаковать как один исполняемый файл без ненужных зависимостей. Или я не совсем понимаю, что вы ищете? Если возможно, пожалуйста, уточните свой вопрос или комментарий. - person Bussller; 17.03.2016