Cara mengkompilasi skrip python ke biner yang dapat dieksekusi

118

Saya perlu mengonversi skrip Python ke Windows yang dapat dieksekusi.

Saya telah menginstal Python 2.6 python26.

Saya telah membuat satu skrip dan menyimpannya C:\pythonscript. Di dalam folder ini ada dua file

Setup.pydan oldlogs.py(file ini perlu ditutupi)

setup.py kode adalah

from distutils.core import setup
import py2exe

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

Bagaimana cara mengonversi oldlogs.py ke file exe?

Dewal Tewari
sumber
1
lihat tutorialnya
Ashwini Chaudhary
Untuk kelengkapan, cx_Freeze adalah alat lain yang dapat Anda gunakan untuk ini (bersama dengan PyInstaller dan py2exe, yang telah disebutkan jawaban lain).
Thomas K

Jawaban:

63

Atau gunakan PyInstaller sebagai alternatif py2exe . Ini adalah titik awal yang bagus . PyInstaller juga memungkinkan Anda membuat file yang dapat dieksekusi untuk linux dan mac ...

Berikut adalah bagaimana seseorang dapat dengan mudah menggunakan PyInstaller untuk menyelesaikan masalah yang dihadapi:

pyinstaller oldlogs.py

Dari dokumentasi alat:

PyInstaller menganalisis myscript.py dan:

  • Menulis myscript.spec di folder yang sama dengan skrip.
  • Membuat build folder di folder yang sama dengan skrip jika tidak ada.
  • Menulis beberapa file log dan file kerja di folder build.
  • Membuat dist folder di folder yang sama dengan skrip jika tidak ada.
  • Menulis folder eksekusi myscript di folder dist.

Di folder dist Anda menemukan aplikasi bundel yang Anda distribusikan ke pengguna Anda.

zenpoy
sumber
9
cx_Freeze lebih baik, bahkan mendukung python 3.3.
Ashwini Chaudhary
Hei, ini bahkan berfungsi dengan wine , setidaknya hingga versi 3.4 python, yang mendukung Windows XP. Benar benar hebat! Saya membuat windows yang dapat dieksekusi dengan wine , python 3.4 dan pip-Win (cukup ikuti petunjuk instalasi di situs web pyinstaller) di mesin Fedora Linux saya.
erik
3
@AshwiniChaudhary, Keduanya tampaknya lintas platform .. namun, jika saya harus cepat menilai mana yang akan digunakan hanya berdasarkan GitHubbintang, PyInstallermemiliki ~ 4000 bintang, cx_Freezememiliki 200 bintang. Jadi PyInstallertampaknya lebih populer dan mungkin memiliki lebih banyak casing tepi tertutup. menurut Anda mengapa cx_Freezelebih baik dari PyInstaller?
alpha_989
Perhatikan bahwa dibandingkan dengan PyInstaller, "cx_Freeze tidak mendukung pembuatan satu file exe, di mana semua pustaka untuk aplikasi Anda disematkan dalam satu file yang dapat dijalankan." cx-freeze.readthedocs.io/en/latest/…
Taylor Edmiston
12

Saya merekomendasikan PyInstaller , skrip python sederhana dapat diubah menjadi exe dengan perintah berikut:

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

yang membuat file programanda.spec yang merupakan konfigurasi untuk membuat exe akhir. Perintah selanjutnya membangun exe dari file konfigurasi:

utils/Build.py oldlogs.spec

Selengkapnya dapat ditemukan di sini

uhz
sumber
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 )
Xooonas
sumber