파이썬 스크립트를 바이너리 실행 파일로 컴파일하는 방법


118

Python 스크립트를 Windows 실행 파일로 변환해야합니다.

Python 2.6이 python26.

하나의 스크립트를 작성하여 C:\pythonscript. 이 폴더 안에는 두 개의 파일이 있습니다

Setup.pyoldlogs.py(이 파일에는 커버가 필요합니다)

setup.py 코드는

from distutils.core import setup
import py2exe

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

oldlogs.py를 exe 파일로 어떻게 변환 할 수 있습니까?



완전성을 위해 cx_Freeze 는이를 위해 사용할 수있는 또 다른 도구입니다 (다른 답변에서 이미 언급 한 PyInstaller 및 py2exe와 함께).
Thomas K

답변:


63

또는 py2exe 대신 PyInstaller 를 사용 하십시오 . 여기에 좋은 출발점이 있습니다. PyInstaller를 사용하면 Linux 및 Mac 용 실행 파일을 만들 수도 있습니다.

다음은 PyInstaller를 사용하여 당면한 문제를 해결하는 방법입니다.

pyinstaller oldlogs.py

도구 설명서에서 :

PyInstaller는 myscript.py를 분석하고 다음을 수행합니다.

  • 스크립트와 동일한 폴더에 myscript.spec을 작성합니다.
  • 존재하지 않는 경우 스크립트와 동일한 폴더에 폴더 빌드를 만듭니다.
  • 빌드 폴더에 일부 로그 파일과 작업 파일을 씁니다.
  • 존재하지 않는 경우 스크립트와 동일한 폴더에 dist 폴더를 만듭니다.
  • dist 폴더에 myscript 실행 폴더를 작성합니다.

dist 폴더에서 사용자에게 배포하는 번들 앱을 찾습니다.


9
cx_Freeze 가 더 좋고 파이썬 3.3도 지원합니다.
Ashwini Chaudhary 2012 년

이건 Windows XP를 지원하는 Python 3.4 버전 이상인 wine 에서도 작동 합니다. 정말 좋아요! 내 Fedora Linux 컴퓨터에서 wine , python 3.4pip-Win (pyinstaller 웹 사이트의 설치 지침을 따르십시오)으로 실행 가능한 Windows를 만들었습니다 .
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/…
Taylor Edmiston

12

다음 명령을 사용하여 간단한 Python 스크립트를 exe로 변환 할 수있는 PyInstaller를 권장 합니다.

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

최종 exe를 빌드하기위한 구성 인 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 )
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.