Як компілювати сценарій python у бінарний виконуваний файл


118

Мені потрібно перетворити скрипт Python у виконуваний файл Windows.

У мене встановлений Python 2.6 python26.

Я створив один сценарій і зберігав його C:\pythonscript. Всередині цієї папки є два файли

Setup.pyі oldlogs.py(цей файл потребує прикриття)

setup.py код є

from distutils.core import setup
import py2exe

setup(console=['oldlogs.py'])

Як я можу конвертувати oldlogs.py у файл EXE?


1
дивіться це підручник
Ashwini Chaudhary

Для повноти, cx_Freeze - це ще один інструмент, який ви можете використовувати для цього (разом з PyInstaller та py2exe, про які вже відповіли інші відповіді).
Thomas K

Відповіді:


63

Або використовувати PyInstaller як альтернативу py2exe . Ось гарна відправна точка . PyInstaller також дозволяє створювати виконувані файли для Linux та Mac ...

Ось як можна досить легко використовувати PyInstaller для вирішення проблеми:

pyinstaller oldlogs.py

З документації на інструмент:

PyInstaller аналізує myscript.py та:

  • Записує myscript.spec у ту ж папку, що і сценарій.
  • Створює побудову папки в тій самій папці, що і сценарій, якщо її немає.
  • Записує деякі файли журналів та робочі файли в папку збірки.
  • Створює папку dist у тій самій папці, що і сценарій, якщо її немає.
  • Записує виконавчу папку таємниць у папку dist.

У папці dist ви знайдете додаток, який ви розповсюджуєте своїм користувачам.


9
cx_Freeze краще, він підтримує навіть python 3.3.
Ашвіні Шадхарі

Гей, це навіть працює з вином , принаймні до версії 3.4 python, яка підтримує Windows XP. Дійсно чудово! Я створив виконуваний Windows з вином , python 3.4 та pip-Win (просто дотримуйтесь інструкцій із встановлення на веб-сайті pyinstaller) на своїй машині Fedora Linux.
erik

3
@AshwiniChaudhary, обидва, здається, є крос-платформою .. однак, якби мені довелося швидко оцінити, яку з них використовувати лише на основі GitHubзірок, PyInstallerмає ~ 4000 зірок, cx_Freezeмає 200 зірок. ТакPyInstaller схоже, це більш популярно і, ймовірно, має більше кришків із краєм. чому ти вважаєш cx_Freeze, що краще, ніж PyInstaller?
alpha_989

Зауважте, що порівняно з PyInstaller, "cx_Freeze не підтримує створення єдиного файлу exe, де всі бібліотеки для вашої програми вбудовані в один виконуваний файл." cx-freeze.readthedocs.io/en/latest/…
Тейлор Едмістон

12

Я рекомендую PyInstaller , простий скрипт python може бути перетворений в exe за допомогою наступних команд:

utils/Makespec.py [--onefile] oldlogs.py

який створює файл yourprogram.spec, який є конфігурацією для побудови остаточного файлу. Наступна команда будує exe з файлу конфігурації:

utils/Build.py oldlogs.spec

Більше можна знайти тут


1
# -*- mode: python -*-

block_cipher = None

a = Analysis(['SCRIPT.py'],
             pathex=[
                 'folder path',
                 'C:\\Windows\\WinSxS\\x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_50c6cb8431e7428f',
                 'C:\\Windows\\WinSxS\\x86_microsoft-windows-m..namespace-downlevel_31bf3856ad364e35_10.0.17134.1_none_c4f50889467f081d'
             ],
             binaries=[(''C:\\Users\\chromedriver.exe'')],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='NAME OF YOUR EXE',
          debug=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.