Programing

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

crosscheck 2020. 8. 31. 07:15
반응형

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


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

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를 실행하기 만하면됩니다).


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

http://www.ironpython.net

[편집하다]

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

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


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


I think it’s also worth mentioning PEX (considering more the attention this question received and less the question itself). According to its own description:

PEX files are self-contained executable Python virtual environments. More specifically, they are carefully constructed zip files with a #!/usr/bin/env python and special __main__.py that allows you to interact with the PEX runtime. For more information about zip applications, see PEP 441.

I stumbled upon it when I read an overview of packaging for python. They posted this nice picture there: enter image description here

To summarize: If you can afford relying on python being installed on the target machine, use PEX to produce a self-containing »executable« which probably will have smaller file size than an executable produced by PyInstaller, for example.


The most convenient* cross-platform way of distributing python desktop applications is to rely on cross-platform conda package manager. There are several tools that use it:

  • Miniconda-Install - powershell/bash scripts that auto-download Miniconda and create isolated conda environment for the app. Supports pip but seem to be unmaintained and has https download issues.
  • Anaconda Project and (conda) constructor by Continuum. Both use conda. (conda) constructor seem to be able to create self-contained installers and even NSIS installer on Windows but doesn't support pip. Seem to behave like Anaconda/Miniconda installers.
  • PyAppShare - the end-user installs Miniconda/Anaconda first (like a runtime environment). Then single install batch/bash script creates isolated conda environment from yaml spec. The application is also a conda/pip package itself that is installed to environment and an executable entry point is created. Cross-platform Desktop and Programs shortcuts automatically created. They activate environment and start the application. Supports pip.

* The most convenient for the developer. Enough convenient for the end-user.

참고URL : https://stackoverflow.com/questions/1558385/how-can-i-distribute-python-programs

반응형