Я будую додаток Python і не хочу змушувати своїх клієнтів встановлювати Python та модулі.
Отже, чи є спосіб скласти сценарій Python, щоб він був самостійним виконуваним файлом?
Я будую додаток Python і не хочу змушувати своїх клієнтів встановлювати Python та модулі.
Отже, чи є спосіб скласти сценарій Python, щоб він був самостійним виконуваним файлом?
Відповіді:
Ви можете використовувати py2exe як уже відповів і використовувати cython для перетворення ваших ключових .py
файлів у файли .pyc
, зібрані з C, як .dll
у Windows та .so
Linux, набагато складніше відновити, ніж загальні .pyo
та .pyc
файли (а також набирати продуктивність!)
Ви можете використовувати PyInstaller для упаковки програм Python як автономних виконуваних файлів. Він працює в Windows, Linux та Mac.
PyInstaller Quickstart
Встановити PyInstaller з PyPI:
pip install pyinstaller
Перейдіть до каталогу програми та запустіть:
pyinstaller yourprogram.py
Це створить пакет у підкаталозі під назвою
dist
.Більш детальну інформацію див. У посібнику .
Можливо, ви хочете розслідувати Нуїтку . Він приймає вихідний код python і перетворює його в C ++ API-виклики. Потім він компілюється у виконуваний двійковий файл (ELF в Linux). Він існує вже декілька років і підтримує широкий спектр версій Python.
Ви, ймовірно, також отримаєте підвищення продуктивності, якщо будете використовувати його. Рекомендовано
Я хотів би зібрати деяку корисну інформацію про створення автономних файлів на Windows за допомогою Python 2.7.
Я використав py2exe і він працює, але у мене виникли деякі проблеми.
Він показав деякі проблеми для створення одиночних файлів у Windows 64 бітах: Використання bundle_files = 1 з py2exe не працює ;
Потрібно створити файл setup.py, щоб він працював. http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
У мене виникли проблеми із залежностями, які вам доведеться вирішити, імпортуючи пакети у файл налаштування;
Мені не вдалося змусити його працювати разом з PyQt ..
Ця остання причина змусила мене спробувати PyInstaller http://www.pyinstaller.org/ .
На мою думку, це набагато краще, тому що:
Я пропоную створити .bat файл із наступних рядків, наприклад (pyinstaller.exe повинен бути на шляху до Windows):
pyinstaller.exe --onefile MyCode.py
Ви можете створити один файл серед інших параметрів ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options ).
У мене була лише одна проблема з використанням пакету PyInstaller та багатопроцесорної обробки, яку було вирішено за допомогою цього рецепта: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing .
Отже, я думаю, що принаймні для python 2.7 кращим і простішим варіантом є PyInstaller.
--onefile
Прапор не допоможе вам зробити це портативний на Windows, так як виконуваний файл все ще хоче , щоб зв'язок з api-ms-win-crt-runtime-l1-1-0.dll
бібліотекою (або / та інші) , які повинні бути встановлені через vcredist
пакет. Отже залежність все ще існує і її потрібно встановити перед запуском.
Так, можна скласти сценарії Python в автономний виконуваний файл.
PyInstaller може використовуватися для перетворення програм Python в автономні виконувані файли під Windows , Linux , Mac OS X , FreeBSD , Solaris та AIX . Це один з рекомендованих перетворювачів.
py2exe перетворює сценарії Python у виконуваний тільки на платформі Windows.
Cython - це статичний компілятор як для мови програмування Python, так і для розширеної мови програмування Cython.
І третій варіант - cx_Freeze
це кросплатформний.
cx_Freeze
випусків на pypi з кінця 2017 року. Чи був цей проект відмовлений?
вам може сподобатися py2exe . ви також знайдете там інформацію про те, як це робити на Linux
Використовуйте py2exe .... використовуйте нижче налаштовані файли:
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import matplotlib
setup(
console=['PlotMemInfo.py'],
options={
'py2exe': {
'packages' : ['matplotlib'],
'dll_excludes': ['libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll']
}
},
data_files = matplotlib.get_py2exe_datafiles()
)
Мені подобається pyinstaller - особливо "віконний" варіант:
pyinstaller --onefile --windowed myscript.py
Це створить один єдиний * .exe файл у dist / folder.
Я також рекомендую pyinstaller
для кращої зворотної сумісності, наприклад, python 2.3 - 2.7.
для py2exe у вас повинен бути python 2.6
Для сценаріїв Python 3.2 єдиний вибір - Cxfreeze. Будуйте його з джерел, інакше це не спрацює.
Для python 2.x я пропоную pyinstaller, оскільки він може упакувати програму python в єдиний виконуваний файл, на відміну від CxFreeze, який видає також бібліотеки.
py2exe зробить файл EXE, який ви хочете, але вам потрібно мати ту саму версію MSVCR90.dll на машині, на якій ви збираєтесь використовувати ваш новий exe. Докладнішу інформацію див. У розділі http://www.py2exe.org/index.cgi/Tutorial .
Ви можете знайти список утиліт дистрибуції, перелічених @ https://wiki.python.org/moin/DistributionUtilities .
Я використовую bbfreeze, і він працює дуже добре (все-таки мати підтримку python 3).
.so
файлів, або копіювати .egg файли безпосередньо, і всі вони повинні бути в одному каталозі (або як єдиний файл). Не потрібно встановлення.
Використовуючи pyinstaller, я знайшов кращий метод за допомогою ярлика до .exe, а не створення --onefile
. У будь-якому випадку, ймовірно, є деякі файли даних навколо, і якщо ви використовуєте веб-додаток, то ваша програма також залежить від html, js, css файлів. Немає сенсу переміщати всі ці файли кудись, а що робити, якщо ми рухаємо робочий шлях вгору.
Зробіть ярлик до EXE, перемістіть його вгорі та встановіть цільові та
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe
Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
пускові шляхи, як зазначено, щоб мати відносні шляхи, що йтимуть до dist \ folder: Я
можу перейменувати ярлик на все, що так перейменовано на "GTFS-Manager"
Тепер, коли я подвійно -натисніть ярлик, це як би я запустив файл python! Я вважав такий підхід кращим за той, --onefile
як:
О, не забудьте видалити папку збірки після побудови, заощадите на розмірі.
Використовуйте Cython для перетворення в c, компіляції та зв’язку з gcc. Іншим може бути: зробити основні функції в c (ті, які ви хочете зробити важкими для зворотного зв'язку), компілювати їх і використовувати python boost для імпорту компільованого коду (плюс ви отримаєте набагато швидше виконання коду). потім використовуйте будь-який згаданий інструмент для розповсюдження.
Мені кажуть, що PyRun, https://www.egenix.com/products/python/PyRun/ , також є варіантом.