파이썬 프로그램을 어떻게 배포 할 수 있습니까?
내 응용 프로그램은 다음과 같습니다.
main.py windows / __init__.py mainwindow.py ... 모델/ __init__.py orders.py ... 자원/ image1.png logo.jpg ...
프로그램은 main.py로 시작됩니다. 그것으로 '최종'애플리케이션을 만드는 좋은 방법이 있습니까? py2exe / py2app과 같은 것을 생각하고 있지만 파이썬 인터프리터 / 모듈을 하나의 실행 파일 만있는 응용 프로그램에 복사하지 않고 있습니다.
나는 distutils를 살펴 보았지만 이것은 파이썬 디렉토리에 프로그램을 설치하는 것처럼 보 였는데, 이는 리눅스가 아닌 플랫폼에서는 일반적이지 않습니다.
지금은 전체 소스 폴더를 대상 컴퓨터에 복사하고 main.pyw
Windows 에서 별칭을 만듭니다 . 몇 가지 불편 사항 :
- 아이콘은 기본 Python 아이콘입니다.
- 수동으로 별칭을 만들어야합니다.
- 내 소스 디렉토리에는 소스 제어 폴더와 같은 추가 파일이 많이 있습니다.
- 나는 이름을 가지고
main.py
에main.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 용 컴파일러가 내장되어 있지 않습니까?
[편집하다]
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:
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
'Programing' 카테고리의 다른 글
ListAdapter를 사용하여 ScrollView 레이아웃 내부의 LinearLayout 채우기 (0) | 2020.08.31 |
---|---|
명령 줄 도구가 설치된 Mavericks에서 xcodebuild를 사용할 수 없음 (0) | 2020.08.31 |
Perl 배열을 반복하는 가장 좋은 방법 (0) | 2020.08.31 |
Timertask 또는 핸들러 (0) | 2020.08.31 |
Android 라이브러리 프로젝트를 테스트하는 방법 (0) | 2020.08.31 |