Jak skompilować skrypt Pythona do pliku binarnego


118

Muszę przekonwertować skrypt Pythona na plik wykonywalny systemu Windows.

Mam zainstalowany Python 2.6 na python26.

Stworzyłem jeden skrypt i zachowałem go C:\pythonscript. W tym folderze znajdują się dwa pliki

Setup.pyi oldlogs.py(ten plik wymaga konwersji)

setup.py kod jest

from distutils.core import setup
import py2exe

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

Jak mogę przekonwertować plik oldlogs.py do pliku exe?



Aby uzyskać kompletność, cx_Freeze to kolejne narzędzie, którego możesz użyć do tego (wraz z PyInstaller i py2exe, o których wspominały już inne odpowiedzi).
Thomas K

Odpowiedzi:


63

Lub użyj PyInstaller jako alternatywy dla py2exe . Oto dobry punkt wyjścia . PyInstaller umożliwia także tworzenie plików wykonywalnych dla systemów Linux i Mac ...

Oto, jak można dość łatwo użyć PyInstaller do rozwiązania danego problemu:

pyinstaller oldlogs.py

Z dokumentacji narzędzia:

PyInstaller analizuje myscript.py i:

  • Zapisuje myscript.spec w tym samym folderze, co skrypt.
  • Tworzy folder zbudowany w tym samym folderze, co skrypt, jeśli nie istnieje.
  • Zapisuje niektóre pliki dziennika i pliki robocze w folderze kompilacji.
  • Tworzy folder dist w tym samym folderze, co skrypt, jeśli nie istnieje.
  • Zapisuje folder wykonywalny myscript w folderze dist.

W folderze dist znajdziesz dołączoną aplikację, którą udostępniasz swoim użytkownikom.


9
cx_Freeze jest lepszy, obsługuje nawet Pythona 3.3.
Ashwini Chaudhary

Hej, to działa nawet z winem , przynajmniej do wersji 3.4 języka Python, która obsługuje system Windows XP. Naprawdę świetnie! Stworzyłem plik wykonywalny Windows z winem , pythonem 3.4 i pip-Win (wystarczy postępować zgodnie z instrukcjami instalacji na stronie pyinstaller) na moim komputerze z Fedorą Linux.
erik

3
@AshwiniChaudhary, Oba wydają się być wieloplatformowe .. jednak gdybym musiał szybko ocenić, którego użyć tylko na podstawie GitHubgwiazd, PyInstallerma ~ 4000 gwiazd, cx_Freezema 200 gwiazd. PyInstallerWydaje się więc, że jest bardziej popularny i prawdopodobnie obejmuje więcej przypadków skrajnych. dlaczego uważasz, że cx_Freezejest lepszy niż PyInstaller?
alpha_989

Zauważ, że w porównaniu do PyInstaller, „cx_Freeze nie obsługuje budowania pojedynczego pliku exe, w którym wszystkie biblioteki aplikacji są osadzone w jednym pliku wykonywalnym”. cx-freeze.readthedocs.io/en/latest/…
Taylor Edmiston

12

Polecam PyInstaller , prosty skrypt Pythona można przekonwertować na exe za pomocą następujących poleceń:

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

który tworzy plik yourprogram.spec, który jest konfiguracją do budowania końcowego exe. Następna komenda buduje exe z pliku konfiguracyjnego:

utils/Build.py oldlogs.spec

Więcej można znaleźć tutaj


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 )
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.