Python 프로젝트에서 단일 실행 파일 만들기
Python 프로젝트에서 단일 실행 파일을 만들고 싶습니다. 사용자는 Python을 설치하지 않고도 다운로드하고 실행할 수 있어야합니다. 패키지를 배포하는 중이라면 pip, wheel 및 PyPI를 사용하여 빌드하고 배포 할 수 있지만이를 위해서는 사용자가 Python을 가지고 있고 패키지 설치 방법을 알고 있어야합니다. Python 프로젝트에서 자체 포함 실행 파일을 빌드하려면 무엇을 사용할 수 있습니까?
다음은 몇 가지 일반적인 것입니다. 명시 적으로 언급하지 않는 한, 아래 나열된 모든 프로젝트는 마지막 편집 (2018 년 8 월)을 기준으로 적극적으로 유지 관리되고 있습니다.
또한 얼마나 자주 업데이트되었는지 직접 확인하려는 경우 해당 웹 사이트, 리포지토리 및 PyPi 목록에 대한 링크도 포함했습니다.
또한, 달리 명시되지 않는 한, 아래 나열된 모든 프로그램은 실행중인 운영 체제에 맞는 exe를 생성합니다. 예를 들어 Windows에서 Pyinstaller를 실행하면 Windows exe가 생성되지만 Linux에서 Pyinstaller를 실행하면 Linux exe가 생성됩니다. 여러 운영 체제에 대한 exe를 생성하려면 가상 머신을 사용하거나 Wine 과 같은 것을 사용해야합니다 .
다음 프로그램은 모두 비슷하게 작동합니다. Python과 프로그램을 함께 묶어 효과적으로 결합하여 실행 파일을 생성합니다.
PyInstaller :
cx_Freeze :
pyapp :
참고 : 이 게시물의 이전 버전에는 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.7 (?).
- 기타 참고 사항 : 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를 생성하는 데 훨씬 더 오래 걸리는 것 같다는 것입니다.
마지막으로, Linux 만 지원하려면 패키지를 실행 파일로 바꾸는 대신 배포판 패키지를 만드는 방법을 살펴 보는 것이 좋습니다. 이를 수행하는 데 도움이 될 수있는 도구를 나열하는 것은이 게시물의 범위를 벗어납니다.하지만 이 경로를 탐색하기로 결정한 경우 여기에 몇 가지 읽기 자료 가 있습니다.
pyinstaller 는 아직 개발 중입니다. GitHub 에서 최신 변경 사항 을 확인할 수 있습니다 .
세 가지 주요 플랫폼을 모두 지원합니다.
- Windows (32 비트 및 64 비트)
- Linux (32 비트 및 64 비트)
- Mac OS X (32 비트 및 64 비트)
and it supports Python versions 2.6 and 2.7. It does not support Python 3, but there is an experimental Python 3 branch.
Update
As of version 3.2.1 it supports Python 2.7, 3.3-3.5
참고URL : https://stackoverflow.com/questions/12059509/create-a-single-executable-from-a-python-project
'program tip' 카테고리의 다른 글
Bootstrap의 btn-group에서 버튼을 사전 전환하려면 어떻게해야합니까? (0) | 2020.10.30 |
---|---|
GEM_HOME과 GEM_PATH의 차이점은 무엇입니까? (0) | 2020.10.30 |
IdeaVim이 포함 된 Pycharm으로 인해 키보드가 응답하지 않는 경우가 있습니다. (0) | 2020.10.30 |
어떻게 하시겠습니까 : 테이블 또는 CSS? (0) | 2020.10.30 |
배열이있는 'for (var item in list)'가 JavaScript에서 나쁜 습관으로 간주되는 이유는 무엇입니까? (0) | 2020.10.30 |