Python 프로젝트에서 단일 실행 파일을 만들고 싶습니다. 사용자는 Python을 설치하지 않고도 다운로드하고 실행할 수 있어야합니다. 패키지를 배포하는 중이라면 pip, wheel 및 PyPI를 사용하여 빌드하고 배포 할 수 있지만이를 위해서는 사용자가 Python을 가지고 있고 패키지를 설치하는 방법을 알고 있어야합니다. Python 프로젝트에서 자체 포함 실행 파일을 빌드하려면 무엇을 사용할 수 있습니까?
답변
다음은 몇 가지 일반적인 것입니다. 명시 적으로 언급하지 않는 한, 아래 나열된 모든 프로젝트는 마지막 편집 (2020 년 1 월)을 기준으로 적극적으로 유지 관리되고 있습니다.
또한 얼마나 자주 업데이트되었는지 직접 확인하려는 경우 해당 웹 사이트, 저장소 및 PyPi 목록에 대한 링크도 포함했습니다.
또한 달리 명시되지 않는 한 아래 나열된 모든 프로그램은 실행중인 운영 체제에 맞는 exe를 생성합니다. 예를 들어 Windows에서 Pyinstaller를 실행하면 Windows exe가 생성되지만 Linux에서 Pyinstaller를 실행하면 Linux exe가 생성됩니다. 여러 운영 체제에 대한 exe를 생성하려면 가상 머신 사용을 조사하거나 Wine 과 같은 것을 사용해야합니다 .
다음 프로그램은 모두 비슷하게 작동합니다. Python과 프로그램을 함께 묶어 효과적으로 결합하여 실행 파일을 생성합니다.
-
PyInstaller :
-
cx_Freeze :
-
py2app :
참고 : 이 게시물의 이전 버전에는 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 프로그램을 실행 파일로 변환하는 것이 반드시 코드를 배포하는 유일한 방법은 아닙니다. 사용 가능한 다른 옵션에 대한 자세한 내용은 다음 링크를 참조하십시오.
답변
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를 지원합니다.