溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python編譯成exe的方法

發(fā)布時(shí)間:2020-08-14 10:34:47 來源:億速云 閱讀:512 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)python編譯成exe的方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。

Python 程序都是腳本的方式,一般是在解析器里運(yùn)行,如果要發(fā)布出去,需要提前安裝解析器才可以運(yùn)行,為了在 Windows 里方便發(fā)布,只要點(diǎn)擊一個(gè) EXE 文件運(yùn)行,并且打包所需要庫文件,這樣發(fā)布給用戶使用就會更方便。

python編譯成exe的方法

PyInstaller

PyInstaller 是一個(gè)十分有用的第三方庫,可以用來打包 python 應(yīng)用程序,打包完的程序就可以在沒有安裝 Python 解釋器的機(jī)器上運(yùn)行了。

更多相關(guān)知識,可以參考這篇文章:《python如何編譯成exe文件》

它能夠在 Windows、Linux、 Mac OS X 等操作系統(tǒng)下將 Python 源文件打包,通過對源文件打包, Python 程序可以在沒有安裝 Python 的環(huán)境中運(yùn)行,也可以作為一個(gè) 獨(dú)立文件方便傳遞和管理。

PyInstaller 支持 Python 2.7 / 3.4-3.7??梢栽?Windows、Mac OS X 和 Linux 上使用,但是并不是跨平臺的,而是說你要是希望打包成 .exe 文件,需要在 Windows 系統(tǒng)上運(yùn)行 PyInstaller 進(jìn)行打包工作。

下面我們以 Windows 為例來進(jìn)行程序的打包工作。

安裝

pip install pyinstaller
# 或者
python -m pip install pyinstaller

使用

pyinstaller -F helloworld.py

其中,-F 表示打包成單獨(dú)的 .exe 文件,這時(shí)生成的 .exe 文件會比較大,而且運(yùn)行速度回較慢。僅僅一個(gè) helloworld 程序,生成的文件就 5MB 大。

另外,使用 -i 還可以指定可執(zhí)行文件的圖標(biāo);

-w 表示去掉控制臺窗口,這在 GUI 界面時(shí)非常有用。不過如果是命令行程序的話那就把這個(gè)選項(xiàng)刪除吧!

PyInstaller 會對腳本進(jìn)行解析,并做出如下動(dòng)作:

1、在腳本目錄生成 helloworld.spec 文件;

2、創(chuàng)建一個(gè) build 目錄;

3、寫入一些日志文件和中間流程文件到 build 目錄;

4、創(chuàng)建 dist 目錄;

5、生成可執(zhí)行文件到 dist 目錄;

執(zhí)行流程:

$ pyinstaller -F helloworld.py
838 INFO: PyInstaller: 3.4
839 INFO: Python: 3.4.3
841 INFO: Platform: Windows-8-6.2.9200
842 INFO: wrote d:\code\Python\pyinstaller\helloworld.spec
858 INFO: UPX is not available.
885 INFO: Extending PYTHONPATH with paths
['d:\\code\\Python\\pyinstaller', 'd:\\code\\Python\\pyinstaller']
886 INFO: checking Analysis
887 INFO: Building Analysis because Analysis-00.toc is non existent
888 INFO: Initializing module dependency graph...
890 INFO: Initializing module graph hooks...
899 INFO: Analyzing base_library.zip ...
6225 INFO: Processing pre-find module path hook   distutils
11387 INFO: running Analysis Analysis-00.toc
12012 INFO: Caching module hooks...
12022 INFO: Analyzing d:\code\Python\pyinstaller\helloworld.py
12027 INFO: Loading module hooks...
12028 INFO: Loading module hook "hook-encodings.py"...
12395 INFO: Loading module hook "hook-xml.py"...
13507 INFO: Loading module hook "hook-pydoc.py"...
13508 INFO: Loading module hook "hook-distutils.py"...
13606 INFO: Looking for ctypes DLLs
13662 INFO: Analyzing run-time hooks ...
13677 INFO: Looking for dynamic libraries
13894 INFO: Looking for eggs
13895 INFO: Using Python library C:\WINDOWS\system32\python34.dll
13895 INFO: Found binding redirects:
[]
13915 INFO: Warnings written to d:\code\Python\pyinstaller\build\helloworld\warn-helloworld.txt
14035 INFO: Graph cross-reference written to d:\code\Python\pyinstaller\build\helloworld\xref-helloworld.html
14287 INFO: checking PYZ
14287 INFO: Building PYZ because PYZ-00.toc is non existent
14288 INFO: Building PYZ (ZlibArchive) d:\code\Python\pyinstaller\build\helloworld\PYZ-00.pyz
15836 INFO: Building PYZ (ZlibArchive) d:\code\Python\pyinstaller\build\helloworld\PYZ-00.pyz completed successfully.
15883 INFO: checking PKG
15884 INFO: Building PKG because PKG-00.toc is non existent
15884 INFO: Building PKG (CArchive) PKG-00.pkg
18528 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
18536 INFO: Bootloader D:\program\Python34\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe
18537 INFO: checking EXE
18537 INFO: Building EXE because EXE-00.toc is non existent
18538 INFO: Building EXE from EXE-00.toc
18538 INFO: Appending archive to EXE d:\code\Python\pyinstaller\dist\helloworld.exe
18548 INFO: Building EXE from EXE-00.toc completed successfully.

生成文件:

python編譯成exe的方法

python編譯成exe的方法

感謝各位的閱讀!關(guān)于python編譯成exe的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI