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

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 파일로 어떻게 변환 할 수 있습니까?



답변

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

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

pyinstaller oldlogs.py

도구 설명서에서 :

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

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

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


답변

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

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

최종 exe를 빌드하기위한 구성 인 yourprogram.spec 파일을 생성합니다. 다음 명령은 구성 파일에서 exe를 빌드합니다.

utils/Build.py oldlogs.spec

더 많은 정보는 여기 에서 찾을 수 있습니다 .


답변

# -*- 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 )


답변