0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【Python】如何將Python腳本打包成exe可執(zhí)行文件

嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 來(lái)源:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 2022-08-18 12:40 ? 次閱讀

?

相信大家也有過(guò)這樣的困惑,本來(lái)已經(jīng)使用Python寫(xiě)好了腳本代碼,又不想公開(kāi)代碼邏輯,但又要給別人使用這些功能?

這可怎么辦呢?

有沒(méi)有什么辦法,可以將Python腳本打包成一個(gè)exe文件,這樣發(fā)布的時(shí)候,我只需要提交一個(gè)exe文件,別人只要雙擊打開(kāi)就能使用我的功能,而我又不需要公開(kāi)代碼,且不一舉兩得?

答案肯定是有的,請(qǐng)看下文分解。


這里我隨意編寫(xiě)了一個(gè)Python腳本作為例子來(lái)介紹,功能很簡(jiǎn)單,就是每秒鐘輸出一個(gè)索引值,值是遞加1的,代碼如下:

import time

index = 1

print('start running')

for index in range(1,1000):
	print(index)
	index = index + 1
	time.sleep(1)

print('stop running ...')
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

使用Python命令行運(yùn)行的結(jié)果如下:


那么我們使用工具把這個(gè)Python代碼打包成一個(gè)exe文件。

這里需要用到一個(gè)Python的工具包,交Pyinstaller,我們使用以下命令就可以安裝它。

pip install pyinstaller
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

如下所示:(黃色字體提示pip有新版本要更新,可以不用管他)

提示安裝成功后,輸入下面的命令,有正常輸出表示pyinstaller安裝成功了。

pyinstaller.exe --help
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

下面我們就開(kāi)始使用這個(gè)工具將python腳本打包成exe文件。

首先,我們進(jìn)到Python腳本文件所在的目錄,如下:(我的是powershell命令行環(huán)境)

接著使用命令開(kāi)始打包Python腳本,交互輸出log如下所示:

PS Z:win_share_workspacetest_sharetest_python2exe> pyinstaller.exe -F .running.py
179 INFO: PyInstaller: 4.5.1
180 INFO: Python: 3.7.8
188 INFO: Platform: Windows-10-10.0.19041-SP0
316 INFO: wrote Z:win_share_workspacetest_sharetest_python2exerunning.spec
501 INFO: UPX is not available.
1113 INFO: Extending PYTHONPATH with paths
['Z:\win_share_workspace\test_share\test_python2exe',
 'Z:\win_share_workspace\test_share\test_python2exe']
6010 INFO: checking Analysis
6047 INFO: Building Analysis because Analysis-00.toc is non existent
6048 INFO: Initializing module dependency graph...
6119 INFO: Caching module graph hooks...
6148 INFO: Analyzing base_library.zip ...
13118 INFO: Processing pre-find module path hook distutils from 'c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks\pre_find_module_path\hook-distutils.py'.
13120 INFO: distutils: retargeting to non-venv dir 'c:\users\redtea\appdata\local\programs\python\python37\lib'
15205 INFO: Caching module dependency graph...
16314 INFO: running Analysis Analysis-00.toc
16322 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
  required by c:usersredteaappdatalocalprogramspythonpython37python.exe
18942 INFO: Analyzing Z:win_share_workspacetest_sharetest_python2exerunning.py
19151 INFO: Processing module hooks...
19153 INFO: Loading module hook 'hook-difflib.py' from 'c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks'...
19155 INFO: Loading module hook 'hook-distutils.py' from 'c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks'...
19157 INFO: Loading module hook 'hook-encodings.py' from 'c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks'...
20863 INFO: Loading module hook 'hook-heapq.py' from 'c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks'...
20865 INFO: Loading module hook 'hook-pickle.py' from 'c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks'...
20867 INFO: Loading module hook 'hook-sysconfig.py' from 'c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks'...
20869 INFO: Loading module hook 'hook-xml.py' from 'c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks'...
21563 INFO: Looking for ctypes DLLs
21564 INFO: Analyzing run-time hooks ...
21567 INFO: Including run-time hook 'c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py'
21636 INFO: Including run-time hook 'c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_inspect.py'
21642 INFO: Looking for dynamic libraries
22600 INFO: Looking for eggs
22600 INFO: Using Python library c:usersredteaappdatalocalprogramspythonpython37python37.dll
22600 INFO: Found binding redirects:
[]
22748 INFO: Warnings written to Z:win_share_workspacetest_sharetest_python2exebuildrunningwarn-running.txt
23472 INFO: Graph cross-reference written to Z:win_share_workspacetest_sharetest_python2exebuildrunningxref-running.html
23842 INFO: checking PYZ
23921 INFO: Building PYZ because PYZ-00.toc is non existent
23921 INFO: Building PYZ (ZlibArchive) Z:win_share_workspacetest_sharetest_python2exebuildrunningPYZ-00.pyz
26078 INFO: Building PYZ (ZlibArchive) Z:win_share_workspacetest_sharetest_python2exebuildrunningPYZ-00.pyz completed successfully.
26806 INFO: checking PKG
26830 INFO: Building PKG because PKG-00.toc is non existent
26830 INFO: Building PKG (CArchive) PKG-00.pkg
48506 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
48830 INFO: Bootloader c:usersredteaappdatalocalprogramspythonpython37libsite-packagesPyInstallerbootloaderWindows-64bitrun.exe
48830 INFO: checking EXE
48912 INFO: Building EXE because EXE-00.toc is non existent
48913 INFO: Building EXE from EXE-00.toc
49652 INFO: Copying icons from ['c:\users\redtea\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\bootloader\images\icon-console.ico']
50456 INFO: Writing RT_GROUP_ICON 0 resource with 104 bytes
50456 INFO: Writing RT_ICON 1 resource with 3752 bytes
50457 INFO: Writing RT_ICON 2 resource with 2216 bytes
50458 INFO: Writing RT_ICON 3 resource with 1384 bytes
50458 INFO: Writing RT_ICON 4 resource with 37019 bytes
50458 INFO: Writing RT_ICON 5 resource with 9640 bytes
50459 INFO: Writing RT_ICON 6 resource with 4264 bytes
50459 INFO: Writing RT_ICON 7 resource with 1128 bytes
52342 INFO: Updating manifest in Z:win_share_workspacetest_sharetest_python2exebuildrunningrun.exe.z10cqb8f
54272 INFO: Updating resource type 24 name 1 language 0
56760 INFO: Appending archive to EXE Z:win_share_workspacetest_sharetest_python2exedistrunning.exe
155327 INFO: Building EXE from EXE-00.toc completed successfully.
poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

看到最后提示successfully,就表示打包成功了。生成的exew文件位于dist目錄,我們打開(kāi)看看。

打包出來(lái)的文件還是畢竟大,簡(jiǎn)單幾行代碼就達(dá)到了6MB,主要是因?yàn)樗岩恍㏄ython的依賴庫(kù)也打包進(jìn)來(lái)了,所以我們雙擊就可以運(yùn)行,運(yùn)行效果與Python命令行運(yùn)行一模一樣。


好了,本期將Python腳本打包成exe文件的教程到這里就結(jié)束了,你學(xué)會(huì)了嗎?

更多實(shí)用教程,請(qǐng)關(guān)注我的主頁(yè),謝謝大家。

?審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • exe
    exe
    +關(guān)注

    關(guān)注

    0

    文章

    110

    瀏覽量

    32644
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4822

    瀏覽量

    85936
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    395

    瀏覽量

    28318
收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【實(shí)用開(kāi)發(fā)工具】BAT腳本打包成exe可執(zhí)行文件

    【實(shí)用開(kāi)發(fā)工具】BAT腳本打包成exe可執(zhí)行文件
    的頭像 發(fā)表于 08-21 19:51 ?2.7w次閱讀
    【實(shí)用開(kāi)發(fā)工具】<b class='flag-5'>將</b>BAT<b class='flag-5'>腳本</b><b class='flag-5'>打包成</b><b class='flag-5'>exe</b><b class='flag-5'>可執(zhí)行文件</b>

    C語(yǔ)言變成可執(zhí)行文件的四大步驟

    從C語(yǔ)言變成最終的可執(zhí)行文件,需要經(jīng)過(guò)四步。
    發(fā)表于 10-18 10:37 ?5839次閱讀

    創(chuàng)建OpenVINO? Python腳本,運(yùn)行可執(zhí)行文件時(shí)遇到的報(bào)錯(cuò)怎么解決?

    ;Devices:\", ie.available_devices) 執(zhí)行以下行以使用 PyInstaller 構(gòu)建可執(zhí)行文件: pyinstaller test.py --onefile 運(yùn)行
    發(fā)表于 03-05 10:20

    LabView生成可執(zhí)行文件EXE

    LabView生成可執(zhí)行文件EXE時(shí),運(yùn)行時(shí)出現(xiàn)ERROR8,創(chuàng)建暫時(shí)的LVSB資源文件是什么意思?。?????
    發(fā)表于 04-11 13:45

    【視頻分享】如何調(diào)試可執(zhí)行文件

    在LabVIEW中,經(jīng)常發(fā)現(xiàn)可執(zhí)行文件和源代碼執(zhí)行結(jié)果有出入。本視頻講解如何調(diào)試可執(zhí)行文件。在優(yōu)酷上面看到的關(guān)于如何調(diào)試可執(zhí)行文件視頻,感覺(jué)還是挺受益的,分享給大家!
    發(fā)表于 07-20 14:46

    關(guān)于生成可執(zhí)行文件的問(wèn)題

    生成了一個(gè)可執(zhí)行文件,在打開(kāi).exe文件時(shí),出現(xiàn)了如圖所示的錯(cuò)誤,請(qǐng)問(wèn)該怎么處理?
    發(fā)表于 01-29 16:19

    python文件如何打包成exe可執(zhí)行文件?

    python文件打包成exe可執(zhí)行文件前言  也許我們不一定是專業(yè)的程序員,但是我們?nèi)匀豢梢酝ㄟ^(guò)代碼提高我們的效率,盡量少加班,多陪陪媳婦。
    發(fā)表于 07-06 06:34

    LabVIEW可執(zhí)行文件作為后臺(tái)進(jìn)程運(yùn)行

    是Application.exe ,其中Application.exe可執(zhí)行文件的名稱。HideRootWindow = True添加到.ini
    發(fā)表于 03-18 21:15

    K510跑python的opencv可行嗎?打包為linux可執(zhí)行文件能跑嗎?

    想了解一下K510跑python的opencv可行嗎?打包為linux可執(zhí)行文件能跑嗎?
    發(fā)表于 09-14 09:01

    用MDK生成bin格式的可執(zhí)行文件

    用MDK 生成bin 文件1用MDK 生成bin 文件Embest 徐良平在RV MDK 中,默認(rèn)情況下生成*.hex 的可執(zhí)行文件,但是當(dāng)我們要生成*.bin 的可執(zhí)行文件時(shí)怎么辦呢
    發(fā)表于 08-02 10:52 ?71次下載

    基于LabVIEW的可執(zhí)行文件調(diào)用的研究與實(shí)現(xiàn)

    LabVIEW 是美國(guó)NI 公司推出的一種基于G 語(yǔ)言的虛擬儀器軟件開(kāi)發(fā)工具。在LabVIEW 開(kāi)發(fā)的軟件中,用戶可能需要調(diào)用.exe 可執(zhí)行文件。本文結(jié)合實(shí)例詳細(xì)介紹了三種調(diào)用方法:通過(guò)Call
    發(fā)表于 08-14 11:42 ?66次下載

    了解在Linux下可執(zhí)行文件格式

    Linux下面,目標(biāo)文件、共享對(duì)象文件、可執(zhí)行文件都是使用ELF文件格式來(lái)存儲(chǔ)的。程序經(jīng)過(guò)編譯之后會(huì)輸出目標(biāo)文件,然后經(jīng)過(guò)鏈接可以產(chǎn)生
    發(fā)表于 05-15 08:49 ?2024次閱讀

    CCES創(chuàng)建可執(zhí)行文件的操作流程

    本模塊介紹用CrossCore? Embedded Studio (CCES)創(chuàng)建可執(zhí)行文件的整個(gè)流程。涉及的主題包括使用新項(xiàng)目向?qū)?、配置系統(tǒng)和工具選項(xiàng),以及構(gòu)建過(guò)程。
    的頭像 發(fā)表于 07-11 06:06 ?3632次閱讀

    labview生成可執(zhí)行程序后vi都在同一路徑下嗎

    打包成一個(gè)單獨(dú)的可執(zhí)行文件或安裝程序,這些VI和資源文件在內(nèi)部被組織和引用,而不是作為單獨(dú)的物理文件存放在exe
    的頭像 發(fā)表于 09-04 17:06 ?1090次閱讀

    labview怎么生成可執(zhí)行文件

    生成可執(zhí)行文件EXE)是LabVIEW程序開(kāi)發(fā)中的一個(gè)重要步驟,它允許用戶LabVIEW項(xiàng)目打包成一個(gè)獨(dú)立的應(yīng)用程序,便于在沒(méi)有安裝LabVIEW的計(jì)算機(jī)上運(yùn)行。 1. 準(zhǔn)備工作
    的頭像 發(fā)表于 09-04 17:07 ?1563次閱讀

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品