>  기사  >  백엔드 개발  >  Python 스크립트를 실행 파일로 패키징하는 방법은 무엇입니까? (상세한)

Python 스크립트를 실행 파일로 패키징하는 방법은 무엇입니까? (상세한)

不言
不言원래의
2018-09-27 15:30:515956검색

이 기사에서는 Python 스크립트를 실행 파일로 패키징하는 방법을 설명합니다. (자세한 내용) 도움이 필요한 친구들이 참고하시면 좋을 것 같습니다.

Python은 통역사가 해석하고 실행하는 스크립트 언어입니다. 출시 방법:

  • .py 파일: 오픈 소스 프로젝트나 소스 코드가 그다지 중요하지 않은 경우 소스 코드가 직접 제공되며, 사용자는 Python 및 다양한 종속 라이브러리를 직접 설치해야 합니다. (이것은 다양한 공식 Python 설치 패키지가 수행하는 작업입니다.)

  • .pyc 파일: 일부 회사 또는 개인은 기밀성 또는 다양한 이유로 소스 코드를 운영자가 볼 수 없도록 pyc 파일을 사용하여 게시할 수 있습니다. pyc 파일은 Python 인터프리터가 바이너리 코드를 인식할 수 있으므로 릴리스 후 크로스 플랫폼입니다. 사용자는 해당 버전의 Python과 종속 라이브러리를 설치해야 합니다.

  • 실행 파일: 코더가 아니거나 초보 사용자에게 종속 라이브러리를 잔뜩 버리는 동시에 Python을 설치하라고 하면 재앙이 될 것입니다. 이러한 사용자에게 가장 쉬운 방법은 실행 파일을 제공하고 사용 방법을 알려주는 것입니다. 더 문제가 되는 것은 서로 다른 플랫폼(Windows, Linux, Mac 등)에 대해 서로 다른 실행 파일을 패키징해야 한다는 것입니다.

이 기사에서는 마지막 방법을 주로 소개합니다. .py와 .pyc 모두 비교적 간단하며 Python 자체에서 처리할 수 있습니다. Python 스크립트를 실행 파일로 패키징하는 방법에는 여러 가지가 있습니다. 이 기사에서는 PyInstaller에 중점을 두고 있으며 다른 기사는 비교 및 ​​참조용으로만 제공됩니다.

코드 고정

다양한 패키징 도구 비교는 다음과 같습니다(코드 고정 문서 참조).

단일 파일 모드Zipfile import아니요 예yes아니요예예
Eggs pkg_resources support bbFreeze yes yes yes no MIT
py2exe yes no no yes MIT yes
no no pyInstaller 아니요 GPL
아니요 cx_Freeze PSF 아니요
아니요 py2app 아니요 아니요 MIT no

PS. 그중에서도 pyInstaller와 cx_Freeze가 모두 좋습니다. stackoverflow의 어떤 사람들은 cx_Freeze를 사용하는 것이 더 편리하다고 제안하기도 했습니다. pkg_resources의 새 버전은 pyInstaller에서 지원되는 것 같습니다.

PyInstaller 설치

네트워크가 상대적으로 안정적이고 pip 소스 주소를 원활하게 사용할 수 있는 사용자의 경우 다음 명령을 실행하면 됩니다.

pip install pyinstaller

일반적으로 소스 코드 패키지를 다운로드한 다음 패키지 디렉터리로 들어갑니다. 다음 명령을 실행합니다(setuptools 설치 필요):

python setup.py install

설치 후 설치가 성공했는지 확인합니다.

pyinstaller --version

설치가 성공한 후 다음 명령을 사용할 수 있습니다.

  • pyinstaller: 실행 파일을 패키징하는 주요 명령입니다. 자세한 사용법은 아래에서 소개하겠습니다. pyinstaller : 打包可执行文件的主要命令,详细用法下面会介绍。

  • pyi-archive_viewer : 查看可执行包里面的文件列表。

  • pyi-bindepend : 查看可执行文件依赖的动态库(.so或.dll文件)

  • pyi-... : 等等。

使用PyInstaller

pyinstaller的语法:

pyinstaller [options] script [script ...] | specfile

最简单的用法,在和myscript.py同目录下执行命令:

pyinstaller mycript.py

然后会看到新增加了两个目录build和dist,dist下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件。有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:

pyinstaller -F mycript.py

你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。

当然,pyinstaller还有各种选项,有通用选项,如-d选项用于debug,了解pyInstaller执行的过程;还有一些针对不同平台的选项,具体用法可以访问PyInstaller官方WIKI。

在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyinstaller如何处理你的所有脚本,同时包含了命令选项。一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时...一些高级打包选项时,需要手动编辑.spec文件。可以使用:

pyi-makespec options script [script ...]

创建一个.spec文件,对于手动编辑的.spec文件,我们可以使用下面任意一条命令:

pyinstaller specfile
pyi-build specfile

PyInstaller的原理简介

PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库。在Linux操作系统下,它主要用的binutil工具包里面的lddobjdump

pyi-archive_viewer : 실행 패키지의 파일 목록을 봅니다.

pyi-bindependent : 실행 파일이 의존하는 동적 라이브러리(.so 또는 .dll 파일)를 봅니다.

🎜pyi-.. . : 잠깐만요. 🎜🎜PyInstaller 사용🎜🎜<code>pyinstaller 구문: 🎜🎜🎜rrreee🎜🎜🎜가장 간단한 사용법은 myscript.py와 동일한 디렉터리에서 명령을 실행하는 것입니다. 🎜🎜 🎜 rrreee🎜🎜🎜 그러면 두 개의 새로운 디렉터리인 build와 dist가 추가된 것을 볼 수 있습니다. dist 아래의 파일은 게시할 수 있는 실행 파일입니다. 다양한 동적 라이브러리와 myscrip 실행 파일을 포함한 dist 디렉토리입니다. 게시하기 전에 모든 것을 dist 아래에 패키지해야 하는 경우가 있습니다. 다행히도 pyInstaller는 단일 파일 모드만 지원합니다. find dist 아래에는 실행 파일이 하나만 있으며, 이 단일 파일은 사용 중인 운영 체제와 유사한 시스템에서 릴리스 및 실행될 수 있습니다. 🎜🎜물론, pyinstaller에는 다양한 옵션도 있습니다. 예를 들어 pyInstaller의 실행 프로세스를 디버깅하고 이해하기 위한 -d 옵션도 있습니다. 사용법에 대해서는 PyInstaller 공식 WIKI를 방문할 수 있습니다. 🎜🎜 pyInstaller 명령을 실행하면 .spec 파일이 스크립트와 동일한 디렉터리에 생성됩니다. 이 파일은 pyinstaller에 모든 스크립트를 처리하는 방법을 알려줍니다. 동시에 명령 옵션이 포함되어 있습니다. 일반적으로 데이터 파일을 패키징해야 하거나 패키징된 바이너리에 일부 Python 런타임 옵션을 추가해야 하는 경우에는 이 파일에 주의를 기울일 필요가 없습니다. 일부 고급 패키징 옵션은 를 수동으로 편집해야 합니다. 사양 파일. 🎜🎜🎜rrreee🎜🎜🎜을 사용하여 .spec 파일을 만들 수 있습니다. 수동으로 편집한 .spec 파일의 경우 다음 명령 중 하나를 사용할 수 있습니다. 🎜🎜🎜rrreee🎜🎜🎜 PyInstaller 원리 소개🎜🎜PyInstaller 실제로는 Python입니다. 파서와 자신의 스크립트를 실행 파일로 패키징하는 것은 실제 기계 코드로 컴파일하는 것과 완전히 다르므로 실행 파일로 패키징하면 오히려 작업 효율성이 향상될 것이라고 기대하지 마십시오. 운영 효율성의 장점은 Python과 스크립트가 실행기의 컴퓨터에 의존하는 라이브러리를 설치할 필요가 없다는 것입니다. Linux 운영 체제에서는 주로 binutil 도구 패키지의 lddobjdump 명령을 사용합니다. 🎜🎜PyInstaller는 지정한 스크립트를 입력하고 먼저 스크립트가 의존하는 다른 스크립트를 분석한 다음 Python 파서를 포함한 모든 관련 스크립트를 검색, 복사, 수집한 다음 이러한 파일을 디렉터리에 넣거나 실행 파일로 패키지합니다. 🎜🎜전체 출력 폴더에 파일을 직접 게시하거나 생성된 실행 파일을 게시할 수 있습니다. 애플리케이션이 독립적이며 직접 실행되기 전에 다른 패키지나 특정 버전의 Python을 설치할 필요가 없다는 점만 사용자에게 알려주면 됩니다. 🎜🎜PyInstaller로 패키징된 실행 파일은 패키징 기계 시스템과 동일한 환경에서만 사용할 수 있다는 점에 유의하세요. 즉, 이식성이 없으며 다른 시스템에서 실행해야 하는 경우 해당 플랫폼용으로 패키지해야 합니다. 🎜

위 내용은 Python 스크립트를 실행 파일로 패키징하는 방법은 무엇입니까? (상세한)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

관련 기사

더보기