Python 프로젝트에서 단일 실행 파일 만들기


87

Python 프로젝트에서 단일 실행 파일을 만들고 싶습니다. 사용자는 Python을 설치하지 않고도 다운로드하고 실행할 수 있어야합니다. 패키지를 배포하는 중이라면 pip, wheel 및 PyPI를 사용하여 빌드하고 배포 할 수 있지만이를 위해서는 사용자가 Python을 가지고 있고 패키지를 설치하는 방법을 알고 있어야합니다. Python 프로젝트에서 자체 포함 실행 파일을 빌드하려면 무엇을 사용할 수 있습니까?


나는 여전히 2.x (정확히 2.7.2)로 작성하고 있지만 3.x (모듈 등이 호환되는 경우)로 전송해야 할 필요성을 볼 수 있으며 솔루션이 필요할 수도 있습니다.
ShadowFlame 2012-08-21

포장은 문제 진단을 크게 복잡하게 만듭니다. 사용자 (또는 pdb) 만이 실행중인 파일에 쉽게 액세스 할 수 없을 뿐만 아니라 ( py2exe다른 사람에 대해서는 알지 못함) .py파일을 포함하지 않으므로 스택 추적에서 소스 행을 볼 수 없습니다.
ivan_pozdeev

관심 지점으로 pyinstaller
ShadowFlame을

답변:


114

다음은 몇 가지 일반적인 것입니다. 명시 적으로 언급하지 않는 한, 아래 나열된 모든 프로젝트는 마지막 편집 (2020 년 1 월)을 기준으로 적극적으로 유지 관리되고 있습니다.

또한 얼마나 자주 업데이트되었는지 직접 확인하려는 경우 해당 웹 사이트, 저장소 및 PyPi 목록에 대한 링크도 포함했습니다.

또한 달리 명시되지 않는 한 아래 나열된 모든 프로그램은 실행중인 운영 체제에 맞는 exe를 생성합니다. 예를 들어 Windows에서 Pyinstaller를 실행하면 Windows exe가 생성되지만 Linux에서 Pyinstaller를 실행하면 Linux exe가 생성됩니다. 여러 운영 체제에 대한 exe를 생성하려면 가상 머신 사용을 조사하거나 Wine 과 같은 것을 사용해야합니다 .


다음 프로그램은 모두 비슷하게 작동합니다. Python과 프로그램을 함께 묶어 효과적으로 결합하여 실행 파일을 생성합니다.

  • PyInstaller :

    • 링크 : 웹 사이트 || Repo || PyPi
    • 지원 : Windows, Mac 및 Linux에서 Python 2.7 및 Python 3.4-3.7.
  • cx_Freeze :

  • py2app :

    • 링크 : 웹 사이트 || Repo || PyPi
    • 지원 : Mac에서만 Python 2.7 및 3.3 (?)-3.7 (?)
    • 참고 : 마지막 편집 시점에서 pyapp에서 지원하는 Python 버전의 정확한 범위를 결정적으로 결정할 수 없었습니다. 최신 릴리스에서는 Python 3.7을 지원한다고 언급합니다.

참고 : 이 게시물의 이전 버전에는 py2exe ( repo ) 및 bbfreeze ( repo )에 대한 글이 포함되어 있습니다. 두 프로젝트 모두이 목록에서 제거되었습니다. 두 프로젝트는 수년 동안 거의 또는 전혀 활동이 없었으며 완전히 유지되지 않은 것으로 보입니다. 이전 글에 대한 편집 내역을 참조하십시오.


물론 이것이 일을하는 유일한 방법은 아닙니다.

  • 피시 스트 :

    • 링크 : 웹 사이트 || Repo || PyPi
    • 지원 : 모든 Python 버전? 참고 -Windows 설치 프로그램 만 생성 합니다.
    • 기타 참고 사항 : Pynsist는 임의의 Python 버전을 애플리케이션과 함께 번들링하는 것을 지원하는 것 같습니다. 그러나 도구 자체를 실행하려면 Python 3.5 이상이 필요합니다.

      Pynsist는 프로그램 용 Windows 설치 프로그램을 생성하여 Python을 코드와 함께 번들로 묶는 대신 사용자의 컴퓨터에 직접 설치하고 Python 스크립트에 연결되는 바로 가기를 만듭니다. 이 프로그램은 Windows 설치 프로그램 만 생성하지만 Mac 및 Linux 컴퓨터에서 여전히 Pynsist실행할 수있는 것으로 보입니다 .

  • Nuitka :

    • 링크 : 웹 사이트 || Repo (Github 미러) || PyPi
    • 지원 : Windows, Mac 및 Linux에서 Python 2.6-2.7 및 Python 3.3-3.7.
    • 기타 참고 사항 : Nuitka는 말 그대로 Python 코드를 컴파일하고 exe (단순히 Python을 포함하는 다른 프로젝트와 달리)를 생성하여 코드 속도를 높입니다. 부작용으로 배포 할 수있는 편리한 exe도 얻을 수 있습니다. 시스템에서 사용할 수 있는 C ++ 컴파일러가 있어야합니다.
  • cython :

    • 링크 : 웹 사이트 || Repo || PyPi
    • 지원 : Windows, Mac 및 Linux에서 Python 2.6-2.7 및 Python 3.2-3.8.
    • 기타 참고 사항 : Cython은 Python 컴파일러라는 점에서 Nuitka와 유사합니다. 그러나 코드를 직접 컴파일하는 대신 C로 컴파일합니다. 그런 다음 해당 C 코드를 가져와 코드를 exe로 바꿀 수 있습니다 . 시스템에서 사용할 수있는 C 컴파일러가 있어야합니다.

개인적으로 선호하는 것은 PyInstaller를 사용하는 것입니다. PyInstaller는 가장 쉽게 시작하고 실행할 수 있고 numpy 또는 pygame과 같은 다양한 인기 라이브러리와 잘 작동하도록 설계되었으며 다양한 OS 및 Python 버전과의 호환성이 뛰어납니다.

그러나 나는 또한 너무 어렵지 않게 cx_Freeze를 사용하여 다양한 exe를 성공적으로 구축 했으므로 해당 프로그램을 사용해 보는 것도 고려해야합니다.

나는 아직 피 니스트, Nuitka 또는 Cython을 광범위하게 시도 할 기회가 없었지만 꽤 흥미롭고 혁신적인 솔루션처럼 보입니다. 첫 번째 프로그램 그룹을 사용하는 데 문제가 발생하면이 세 가지 중 하나를 시도해 보는 것이 좋습니다. Pyinstaller / cx_freeze 스타일 프로그램과 근본적으로 다르게 작동하기 때문에 첫 번째 그룹이 실패하는 이상한 경우에 성공할 수 있습니다.

특히, 저는 pynist가 코드 배포와 관련된 전체 문제를 회피하는 좋은 방법이라고 생각합니다. Mac과 Linux는 이미 Python을 기본적으로 지원하고 있으며 Windows에 Python을 설치하는 것이 진정으로 가장 깨끗한 솔루션 일 수 있습니다. (단점은 이제 여러 버전의 Python + 라이브러리 설치에 대해 걱정할 필요가 있다는 것입니다.)

Nuitka와 Cython (내 제한된 경험에서)은 상당히 잘 작동하는 것 같습니다. 다시 말하지만, 나는 그것들을 광범위하게 테스트하지 않았고, 그래서 나의 주요 관찰은 그들이 "고정"스타일 프로그램이하는 것보다 exe를 생성하는 데 훨씬 더 오래 걸리는 것 같다는 것입니다.


이 모든 말은 Python 프로그램을 실행 파일로 변환하는 것이 반드시 코드를 배포하는 유일한 방법은 아닙니다. 사용 가능한 다른 옵션에 대한 자세한 내용은 다음 링크를 참조하십시오.


1
참고 당신은 또한 당신의 번들 내부에 포함 할 필요가 마이크로 소프트 C ++ 재배포 가능 (일명 msvcrxx.dll, 어디 xx한 .exe 실행을 (또는 스스로 설치하도록 요청)하는 버전 번호입니다). 이는 Python이 Visual Studio를 사용하여 Windows에서 빌드되기 때문에 필요합니다.
gaborous

따라서 파이썬 IDE (pycharm 또는 pydev-eclipse 플러그인) 중 어느 것도 아직 IDE 자체에 단일 실행 가능한 컴파일 기능을 통합하지 않은 것 같습니다. 그 맞습니까? :-)
Nelda.techspiress

소스 코드를 안전하게 유지하는 데 관심이 있다면 C 코드를 컴파일하기 때문에 Cython이 최선의 선택 일 것입니다. 사용하십시오 그 프로그램 동결 일반적으로 기술은 쉽게 디 컴파일 할 수 있습니다.
Martín De la Fuente

PyInstaller는 Python 3.7을 지원하는 것으로 위에 나열되어 있습니다. 내 경험과 pyinstaller.org의 설명에 따르면 "PyInstaller는 Python 2.7 및 3.3-3.6에서 작동합니다"라는 설명에 따르면 사실이 아닙니다.

1
@Tom-좀 더 자세히 살펴본 결과, pyinstaller 자체가 Python 3.7을 지원하지만 공식적으로 3.7을 지원하는 새 버전을 출시하지 않은 것 같습니다. (예를 들어 github 저장소에 Python 3.7을 지원한다고 명시되어 있으며 3.7과 관련된 미해결 문제가없는 것으로 보이지만 PyPi의 pyinstaller 최신 버전은 2017 년 12 월입니다.) 따라서 3.7 지원이 필요한 경우 소스에서 직접 pyinstaller를 빌드 + 설치하거나 다음 릴리스까지 기다릴 수 있습니다. (또는 물론, 다른 프로그램을 사용)
Michael0x2a

10

pyinstaller 는 아직 개발 중입니다. GitHub 에서 최신 변경 사항 을 확인할 수 있습니다 .

세 가지 주요 플랫폼을 모두 지원합니다.

  • Windows (32 비트 및 64 비트)
  • Linux (32 비트 및 64 비트)
  • Mac OS X (32 비트 및 64 비트)

Python 버전 2.6 및 2.7을 지원합니다. Python 3을 지원하지 않지만 실험적인 Python 3 분기가 있습니다.

최신 정보

버전 3.2.1부터 Python 2.7, 3.3-3.5를 지원합니다.


2

pip install auto-py-to-exe실행 파일을 만드는 데 필요한 모든 옵션과 함께 아름다운 UI를 제공하는 더 나은 사용 .

설치 후 auto-py-to-exe터미널 또는 명령 프롬프트에 입력 하십시오.

Auto-py-to-exe


이것만큼 오래된 대화 목록에 여전히 회신 해 주셔서 감사합니다. 놀라운 발견으로 보이며 설정시 작업을 실제로 단순화하고 실제 사용되는 명령을 제공합니다. D
ShadowFlame
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.