[python] 파이썬 프로그램을 어떻게 배포 할 수 있습니까?

내 응용 프로그램은 다음과 같습니다.

main.py
windows /
    __init__.py
    mainwindow.py
    ...
모델/
    __init__.py
    orders.py
    ...
자원/
    image1.png
    logo.jpg
    ...

프로그램은 main.py로 시작됩니다. 그것으로 ‘최종’애플리케이션을 만드는 좋은 방법이 있습니까? py2exe / py2app와 같은 것을 생각하고 있지만 파이썬 인터프리터 / 모듈을 하나의 실행 파일 만있는 응용 프로그램에 복사하지 않고 있습니다.

나는 distutils를 살펴 보았지만 이것은 파이썬 디렉토리에 프로그램을 설치하는 것처럼 보 였는데, 이는 리눅스가 아닌 플랫폼에서는 일반적이지 않습니다.

지금은 전체 소스 폴더를 대상 컴퓨터에 복사하고 main.pywWindows 에서 별칭을 만듭니다 . 몇 가지 불편 사항 :

  • 아이콘은 기본 Python 아이콘입니다.
  • 수동으로 별칭을 만들어야합니다.
  • 내 소스 디렉토리에는 소스 제어 폴더와 같은 추가 파일이 많이 있습니다.
  • 나는 이름을 가지고 main.pymain.pyw수동으로.
  • 대상 머신에`.pyo * 파일 만 있으면 좋을 것입니다. 그럴만한 이유는없고 불필요한 파일이있는 게 싫어요.

멋진 자동 배포를 만드는 방법은 무엇입니까?

  • 창문? (현재 내가 지원해야하는 유일한 플랫폼입니다.)
  • Mac 용?
  • 리눅스 용?


답변

Python 애플리케이션을 배포하는 일반적인 방법은 distutils를 사용하는 것 입니다. Windows에서 어떻게 작동하는지 모르겠지만 라이브러리 유형 파이썬 모듈과 파이썬 응용 프로그램을 배포하기 위해 만들어졌습니다. Windows에서는 distutils를 사용하는 경우 Python을 별도로 설치해야합니다.

Linux 용 disutils, Windows 용 Py2exe 또는 이와 유사한 것으로 배포하는 것이 좋습니다. OS XI의 경우는 모릅니다. 최종 사용자 응용 프로그램 인 경우 디스크 이미지 유형을 원할 것입니다. 어떻게해야할지 모르겠습니다. 그러나 사용자 경험에 대한 자세한 내용은 이 게시물 을 읽으 십시오. 프로그래머 용으로 만들어진 응용 프로그램의 경우 OS X에도 distutils 유형 설치를해도 괜찮을 것입니다.


답변

모든 주요 플랫폼을 매우 원활하게 지원하는 Pyinstaller를 적극 권장 합니다. py2exe 및 py2app과 마찬가지로 Windows에서 표준 실행 파일을 생성하고 OS X에서 앱 번들을 생성하지만 추가 구성 조정없이 공통 종속성을 자동 해결하고 포함하는 환상적인 작업을 수행 할 수도 있습니다.

또한 Python 2.6을 Windows에 배포 하는 경우이 패치 를 Pyinstaller 트렁크에 적용해야합니다 .

설치 프로그램 이 필요하지 않다고 하셨지만 Inno Setup 은 Windows 플랫폼에서 사용하기 쉽고 빠르게 설정할 수 있습니다.


답변

Fredrik Lundh squeeze.py는 Python 인터프리터를 포함하지 않고 대신 바이트 코드를 포함하는 단일 파일을 만들 수 있습니다. 올바른 인수를 사용하면 결과 파일에 다른 파일, 모듈 등을 포함 할 수 있습니다. 한 프로젝트에서 성공적으로 사용했습니다. 결과 프로그램은 OS X, Linux 및 Windows에서 문제없이 실행되었습니다!

추신 : 각 머신에는 squeeze.py에서 생성 된 바이트 코드와 호환되는 Python 인터프리터가 있어야합니다. 필요한 경우 Python의 다른 버전에 대해 다른 바이트 코드 버전을 생성 할 수 있습니다 (올바른 Python 버전으로 squeeze.py를 실행하기 만하면됩니다).


답변

나는 또한 PEX에 대해 언급 할 가치가 있다고 생각합니다 (이 질문이받은 관심을 더 많이 고려하고 질문 자체는 적습니다). 자체 설명 에 따르면 :

PEX 파일은 자체 포함 실행 가능 Python 가상 환경입니다. 보다 구체적으로, PEX 런타임과 상호 작용할 수 있는 #!/usr/bin/env python및 특수 기능 __main__.py을 사용 하여 신중하게 구성된 zip 파일입니다 . zip 애플리케이션에 대한 자세한 정보는 PEP 441을 참조하십시오 .

파이썬 패키징 개요를 읽을 때 우연히 발견했습니다 . 그들은이 멋진 사진을 거기에 올렸습니다.
여기에 이미지 설명 입력

요약하면 : 타겟 머신에 파이썬이 설치되는 것에 의존 할 여유가 있다면 PEX를 사용하여 예를 들어 PyInstaller가 생성 한 실행 파일보다 파일 크기가 더 작은 자체 포함»실행 파일«을 생성하십시오.


답변

내가 착각 할 수 있지만 IronPython에는 Windows 용 컴파일러가 내장되어 있지 않습니까?

http://www.ironpython.net

[편집하다]

Cx_Freeze를 사용해보십시오. 지금까지 제가 사용해 본 .exe (및 몇 가지 .dll) 컴파일러에 대한 최고의 .py입니다.

http://cx-freeze.sourceforge.net/


답변

Windows에 배포하는 경우 설치 프로그램 을 사용하여 필요한 모든 관련 파일 / 인터 피터를 설치하십시오. setup.exe를 배포합니다. 그것이 창문에서 가장 좋은 방법입니다. 그렇지 않으면 사용자가 불평 할 것입니다.


답변

Python 데스크톱 응용 프로그램을 배포하는 가장 편리한 * 크로스 플랫폼 방법은 크로스 플랫폼 conda 패키지 관리자에 의존하는 것입니다. 이를 사용하는 몇 가지 도구가 있습니다.

  • Miniconda-Install-Miniconda 를 자동 다운로드하고 앱을위한 격리 된 conda 환경을 만드는 powershell / bash 스크립트입니다. pip를 지원하지만 유지되지 않는 것 같고 https 다운로드 문제가 있습니다.
  • Continuum의 Anaconda Project(conda) 생성자 . 둘 다 conda를 사용합니다. (conda) 생성자는 Windows에서 자체 포함 된 설치 프로그램과 NSIS 설치 프로그램을 만들 수있는 것 같지만 pip를 지원하지 않습니다. Anaconda / Miniconda 설치 프로그램처럼 동작하는 것 같습니다.
  • PyAppShare- 최종 사용자가 Miniconda / Anaconda를 먼저 설치합니다 (예 : 런타임 환경). 그런 다음 단일 설치 배치 / bash 스크립트는 yaml 사양에서 격리 된 conda 환경을 만듭니다. 응용 프로그램은 환경에 설치되는 conda / pip 패키지 자체이며 실행 가능한 진입 점이 생성됩니다. 크로스 플랫폼 데스크톱 및 프로그램 바로 가기가 자동으로 생성됩니다. 그들은 환경을 활성화하고 응용 프로그램을 시작합니다. pip를 지원합니다.

* 개발자에게 가장 편리합니다. 최종 사용자에게 충분히 편리합니다.