Cách biên dịch tập lệnh python thành tệp thực thi nhị phân


118

Tôi cần chuyển đổi tập lệnh Python sang tệp thực thi Windows.

Tôi đã cài đặt Python 2.6 cho python26.

Tôi đã tạo một tập lệnh và giữ nó trong đó C:\pythonscript. Bên trong thư mục này có hai tệp

Setup.pyoldlogs.py(tệp này cần được che đậy)

setup.py mã là

from distutils.core import setup
import py2exe

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

Làm cách nào để chuyển đổi oldlogs.py thành một tệp exe?



Để hoàn thiện, cx_Freeze là một công cụ khác mà bạn có thể sử dụng cho việc này (cùng với PyInstaller và py2exe, mà các câu trả lời khác đã đề cập).
Thomas K

Câu trả lời:


63

Hoặc sử dụng PyInstaller thay thế cho py2exe . Đây là một điểm khởi đầu tốt . PyInstaller cũng cho phép bạn tạo tệp thực thi cho linux và mac ...

Đây là cách người ta có thể sử dụng PyInstaller một cách dễ dàng để giải quyết vấn đề trong tầm tay:

pyinstaller oldlogs.py

Từ tài liệu của công cụ:

PyInstaller phân tích myscript.py và:

  • Viết myscript.spec trong cùng một thư mục với script.
  • Tạo một bản dựng thư mục trong cùng một thư mục với tập lệnh nếu nó không tồn tại.
  • Ghi một số tệp nhật ký và tệp làm việc trong thư mục xây dựng.
  • Tạo một phân phối thư mục trong cùng thư mục với tập lệnh nếu nó không tồn tại.
  • Ghi thư mục thực thi myscript trong thư mục dist.

Trong thư mục dist, bạn tìm thấy ứng dụng đi kèm mà bạn phân phối cho người dùng của mình.


9
cx_Freeze thì tốt hơn, nó hỗ trợ cả python 3.3.
Ashwini Chaudhary

Này, điều này thậm chí hoạt động với rượu vang , ít nhất lên đến phiên bản 3.4 của python, hỗ trợ Windows XP. Thực sự tuyệt vời! Tôi đã tạo một cửa sổ thực thi với wine , python 3.4pip-Win (chỉ cần làm theo hướng dẫn cài đặt trên trang web pyinstaller) trên máy Fedora Linux của mình.
erik

3
@AshwiniChaudhary, Cả hai đều có vẻ là nền tảng chéo .. tuy nhiên, nếu tôi phải nhanh chóng đánh giá xem nên sử dụng cái nào chỉ dựa trên số GitHubsao, PyInstallercó ~ 4000 sao, cx_Freezecó 200 sao. Vì vậy, PyInstallerdường như phổ biến hơn và có lẽ có nhiều trường hợp cạnh được che phủ hơn. tại sao bạn nghĩ cx_Freezelà tốt hơn PyInstaller?
alpha_989

Lưu ý rằng so với PyInstaller, "cx_Freeze không hỗ trợ xây dựng một tệp exe duy nhất, nơi tất cả các thư viện cho ứng dụng của bạn được nhúng trong một tệp thực thi." cx-freeze.readthedocs.io/en/latest/…
Taylor Edmiston

12

Tôi khuyên bạn nên sử dụng PyInstaller , một tập lệnh python đơn giản có thể được chuyển đổi thành exe bằng các lệnh sau:

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

tạo tệp yourprogram.spec là cấu hình để xây dựng exe cuối cùng. Lệnh tiếp theo xây dựng exe từ tệp cấu hình:

utils/Build.py oldlogs.spec

Có thể tìm thấy thêm ở đây


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 )
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.