国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python代碼打包成可執(zhí)行文件(exe)

這篇具有很好參考價(jià)值的文章主要介紹了python代碼打包成可執(zhí)行文件(exe)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


【前言】:我們?cè)陂_發(fā)完一個(gè)小項(xiàng)目后,想要把項(xiàng)目發(fā)布出來給別人用。通常都會(huì)把代碼打包成exe后再給別人,而不是讓別人去安裝運(yùn)行環(huán)境再跑裸代碼。本文就是介紹如何使用pyinstaller這個(gè)工具將python帶包成可直接運(yùn)行的exe。

▍概述

在介紹pyinstaller之前,先簡單介紹下其它幾個(gè)可以用于打包python代碼的工具:

  • cx_Freeze:可以將Python腳本轉(zhuǎn)換為獨(dú)立的可執(zhí)行文件,支持多個(gè)平臺(tái)。

  • PyInstaller:可以將Python腳本(或模塊)轉(zhuǎn)換為單個(gè)可執(zhí)行文件或目錄,支持多個(gè)平臺(tái)。

  • PyOxidizer:功能類似于PyInstaller,但它可以生成自包含的二進(jìn)制文件,可以跨平臺(tái)使用。

  • Py2exe:僅適用于Windows平臺(tái),可以將Python腳本轉(zhuǎn)換為.exe可執(zhí)行文件。

Pyinstaller打包代碼的步驟有:

  1. 使用pip install pyinstaller命令安裝pyinstaller庫。

  2. pyinstaller提供兩種打包方式;

    方式一: 在cmd終端進(jìn)入要打包的Python文件所在目錄,使用pyinstaller xxx.py命令打包代碼。

    方式二: 在cmd終端進(jìn)入要打包的Python文件所在目錄,使用pyi-makespec xxx.py命令生成spec文件,然后對(duì)spec需要修改的區(qū)域做修改,再使用pyinstaller xxx.spec命令打包代碼。

  3. 使用pyinstaller打包成功之后,產(chǎn)生兩個(gè)文件夾:

    build文件夾:這是打包過程中臨時(shí)文件的存放位置。這些文件包括 Python 源代碼、打包腳本和其他一些中間文件。在成功打包應(yīng)用程序后,該目錄可以被安全地刪除。

    dist文件夾:這是最終生成的可執(zhí)行文件及其依賴項(xiàng)的存放位置。

▍方式一:命令行直接打包

使用命令行打包通常適用于簡單的項(xiàng)目,不需要復(fù)雜的配置或自定義設(shè)置,也無需頻繁重復(fù)打包的情況;假設(shè)我們的python代碼如下,文件名為demo.py。

#demo.py
import os
path=os.getcwd()
print(f'當(dāng)前文件路徑:{path}')
os.system('pause')

打包步驟:

1. 在cmd終端中進(jìn)入demo.py文件的所在目錄。
2. 終端執(zhí)行:pyinstaller -F demo.py

指令解釋:

pyinstaller
[-F/-D]       # [產(chǎn)生當(dāng)個(gè)可執(zhí)行文件/產(chǎn)生一個(gè)目錄(包含多個(gè)文件)作為可執(zhí)行文件]
[-w/-c]       # [去掉命令行彈窗/顯示命令行彈窗]
-i icon.ico   # 指定exe顯示圖標(biāo)
demo.py     #打包的python文件

結(jié)果:

打包完成后在demo.py文件所在目錄下生成build和dist兩個(gè)文件夾,dist目錄下的demo.exe即為我們打包后的可執(zhí)行文件。點(diǎn)擊demo.exe文件彈出小黑窗即為打包成功。

python打包成可執(zhí)行文件,python,開發(fā)語言

▍方式二:使用spec打包

spec文件打包適用于更大規(guī)模、更復(fù)雜的項(xiàng)目,以及需要自定義配置和頻繁重復(fù)打包的時(shí)候使用;需要使用 .spec 文件進(jìn)行打包的情況有:

  1. 有數(shù)據(jù)文件需要一起打包

  2. 把動(dòng)態(tài)鏈接庫一起打包

  3. 添加運(yùn)行時(shí)選項(xiàng)

  4. 想要生成多個(gè)可執(zhí)行程序,公共的模塊分割出來給其他調(diào)用

假設(shè)我們的項(xiàng)目文件結(jié)構(gòu)如下圖所示。

PackingExe
|_ core
    |_ __init__.py
    |_ dict.txt
  |_ demo.py

demo.py文件

def resource_path(relative_path):
    """ 運(yùn)行exe時(shí)獲取資源文件的絕對(duì)路徑"""
    base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
    return os.path.join(base_path, relative_path)

def main():
    print(f'當(dāng)前文件路徑:{os.getcwd()}')
    abs_path = resource_path('core/dict.txt')
    with open(abs_path, 'r', encoding='utf-8') as file:
        content = file.readline()
        print(content)
    os.system('pause')

if __name__ == "__main__":
    main()

此處解釋一下資源路徑函數(shù)(resource_path);當(dāng)exe在運(yùn)行時(shí),會(huì)生成一個(gè)臨時(shí)文件夾,除代碼之外的數(shù)據(jù)資源需要通過sys._MEIPASS訪問臨時(shí)文件夾獲取。

打包步驟:

1. 在終端中進(jìn)入PackingExe目錄。
2. 生成spec文件:pyi-makespec -F demo.py    # 生成apec文件,支持-F,--key等參數(shù),不支持--upx-dir
3. 修改spec文件
4. 執(zhí)行打包命令:pyinstaller demo.spec   # 使用spec文件打包,不支持外部參數(shù)

如何正確編輯spec文件?

spec文件主要包含四個(gè)類:

  • Analysis類:用于分析 Python 模塊之間的依賴關(guān)系,并對(duì)需要的東西進(jìn)行打包。

  • PYZ類:是一個(gè)由多個(gè)Python文件組成的二進(jìn)制文件。PYZ文件內(nèi)部包含整個(gè)程序的代碼和標(biāo)準(zhǔn)庫,以及在腳本代碼中使用的所有第三方庫。

  • EXE類:指定要生成的可執(zhí)行文件的相關(guān)信息,例如名稱、平臺(tái)、圖標(biāo)等。

  • COLLECT類:用于收集所有需要包含在可執(zhí)行文件中的文件,并將其復(fù)制到構(gòu)建目錄中以供打包和部署使用。在-F模式下,是沒有COLLECT類。

python打包成可執(zhí)行文件,python,開發(fā)語言

用于打包PackingExe項(xiàng)目的spec文件如下:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(
    ['demo.py'],
    pathex=[],
    binaries=[],
    datas=[('core\dict.txt', 'core')],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='demo',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

結(jié)果:

打包完成后在demo.py文件所在目錄下生成build和dist兩個(gè)文件夾,dist目錄下的demo.exe即為我們打包后的可執(zhí)行文件。點(diǎn)擊demo.exe文件彈出小黑窗即為打包成功。

python打包成可執(zhí)行文件,python,開發(fā)語言

▍可能打包失敗的原因

  • 程序有bug時(shí),打包后的exe會(huì)出現(xiàn)閃退,而不是在小黑窗上報(bào)錯(cuò);

  • 用于打包的python解釋器路徑不能有中文或空格;如果必須有可以修改python安裝目錄下的scripts/pyinstaller-script.py文件中的python.exe路徑;

  • 最好在py文件首行添加# -*- coding:utf-8 -*-,否則exe容易編碼錯(cuò)誤;

▍學(xué)習(xí)資源推薦

除了上述分享,如果你也喜歡編程,想通過學(xué)習(xí)Python獲取更高薪資,這里給大家分享一份Python學(xué)習(xí)資料。

這里給大家展示一下我進(jìn)的最近接單的截圖

python打包成可執(zhí)行文件,python,開發(fā)語言

??朋友們?nèi)绻行枰脑?,可?mark>點(diǎn)擊下方鏈接領(lǐng)取或者V掃描下方二維碼聯(lián)系領(lǐng)取,也可以內(nèi)推兼職群哦~

學(xué)好 Python 不論是就業(yè)還是做副業(yè)賺錢都不錯(cuò),但要學(xué)會(huì) Python 還是要有一個(gè)學(xué)習(xí)規(guī)劃。最后大家分享一份全套的 Python 學(xué)習(xí)資料,給那些想學(xué)習(xí) Python 的小伙伴們一點(diǎn)幫助!

python打包成可執(zhí)行文件,python,開發(fā)語言 ### 1.Python學(xué)習(xí)路線

python打包成可執(zhí)行文件,python,開發(fā)語言

python打包成可執(zhí)行文件,python,開發(fā)語言

2.Python基礎(chǔ)學(xué)習(xí)

01.開發(fā)工具

python打包成可執(zhí)行文件,python,開發(fā)語言

02.學(xué)習(xí)筆記

python打包成可執(zhí)行文件,python,開發(fā)語言

03.學(xué)習(xí)視頻

python打包成可執(zhí)行文件,python,開發(fā)語言

3.Python小白必備手冊(cè)

python打包成可執(zhí)行文件,python,開發(fā)語言

4.數(shù)據(jù)分析全套資源

python打包成可執(zhí)行文件,python,開發(fā)語言

5.Python面試集錦

01.面試資料

python打包成可執(zhí)行文件,python,開發(fā)語言

python打包成可執(zhí)行文件,python,開發(fā)語言

02.簡歷模板

python打包成可執(zhí)行文件,python,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-658751.html

python打包成可執(zhí)行文件,python,開發(fā)語言

到了這里,關(guān)于python代碼打包成可執(zhí)行文件(exe)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Python打包成exe】快速將多個(gè)py文件及其他文件打包為exe可執(zhí)行文件

    【Python打包成exe】快速將多個(gè)py文件及其他文件打包為exe可執(zhí)行文件

    嘗試了很多種Python打包為exe可執(zhí)行文件的方式,通過總結(jié),得出一種最簡潔、最有效的打包方式分享給大家! 準(zhǔn)備好將要打包的工程文件(夾) 如上圖所示, 首先將主文件UI.py和文件夾./file放在一級(jí)文件夾./YW下方,如果有同級(jí)其他.py文件與UI.py放在同一級(jí)文件夾即可! 然后

    2024年01月21日
    瀏覽(29)
  • (Part2)Python編寫的計(jì)算跳過帶有特定數(shù)字的車位數(shù)量小程序,并利用wxPython做成GUI界面打包成可執(zhí)行文件

    (Part2)Python編寫的計(jì)算跳過帶有特定數(shù)字的車位數(shù)量小程序,并利用wxPython做成GUI界面打包成可執(zhí)行文件

    ? ? ? ? ?本文主要講述利用Python來編寫一個(gè)可以計(jì)算跳過帶有特定數(shù)字的車位數(shù)量小程序。并且又利用第三方庫wxPython做出GUI界面,打包成可執(zhí)行文件。 ????????現(xiàn)實(shí)中有這樣的實(shí)際案例,某樓盤的地下車庫的數(shù)量有2000多個(gè)車位,車位分成了5個(gè)分區(qū),每個(gè)分區(qū)有400-500個(gè)

    2024年03月12日
    瀏覽(30)
  • python項(xiàng)目打包成exe可執(zhí)行文件(pyinstaller庫)

    python項(xiàng)目打包成exe可執(zhí)行文件(pyinstaller庫)

    前言:才入職新公司;進(jìn)來工作內(nèi)容,就是將之前的python腳本項(xiàng)目打包成.exe可執(zhí)行文件;一來方便不同崗位的同事之間使用,二來源碼信息不會(huì)改動(dòng)和泄漏。 正因?yàn)閜ython具有豐富的第三方庫,目前已有數(shù)萬之多;這里用到的是 \\\'pyinstaller\\\'庫; 正文: 兩種情況: Ⅰ、單獨(dú)一個(gè)

    2024年02月06日
    瀏覽(24)
  • 通過pyinstaller將python項(xiàng)目打包成exe執(zhí)行文件

    目錄 第一步:安裝pyinstaller 第二步:獲取一個(gè)ico圖標(biāo)(也即是自己這個(gè)exe文件最后的圖標(biāo)) 第三步:打包 pip install pyinstaller 先從這里獲取一個(gè)png圖片:iconfont-阿里巴巴矢量圖標(biāo)庫 再轉(zhuǎn)化成ico圖片(推薦256 x 256):PNG轉(zhuǎn)ICO - 在線轉(zhuǎn)換圖標(biāo)文件 ?可以把得到的ico圖片放在pytho

    2024年02月09日
    瀏覽(32)
  • python 打包項(xiàng)目(包含.ui文件,.dll文件)為exe可執(zhí)行文件

    python 打包項(xiàng)目(包含.ui文件,.dll文件)為exe可執(zhí)行文件

    目錄 1. 背景 2. 生成.spec文件: 3. 編輯.spec文件: 4. 最后生成單個(gè)可執(zhí)行文件.exe: ?5 補(bǔ)充: 1. 背景 ????????最近在項(xiàng)目中想做一個(gè)用于燒錄MCU的上位機(jī)給工廠用。于是在某工程模板上簡單開發(fā)了一個(gè)基于python 和pyQt5的上位機(jī)軟件。項(xiàng)目包含多個(gè).py文件,多個(gè).dll文件,一

    2024年02月16日
    瀏覽(22)
  • py2exe打包Python程序?yàn)閃indows下的exe執(zhí)行文件

    py2exe打包Python程序?yàn)閃indows下的exe執(zhí)行文件

    py2exe 是一個(gè)將 Python 腳本轉(zhuǎn)換成 Windows 上可獨(dú)立執(zhí)行的**.exe 程序的工具,這樣就可以在不用裝Python解析器的情況下在 Windows**系統(tǒng)上運(yùn)行這個(gè)可執(zhí)行程序。 py2exe 已經(jīng)被用于創(chuàng)建 wxPython 、 Tkinter 、 Pmw 、 PyGTK 、 pygame 、 win32com client和server ,和其它的獨(dú)立程序。 py2exe 是發(fā)布在開

    2024年02月04日
    瀏覽(23)
  • nuitka打包python的PyQt5成exe可執(zhí)行文件

    nuitka打包python的PyQt5成exe可執(zhí)行文件

    可以打包多文件,也可以打包單文件。 使用的python版本是3.8.10 1、下載gcc 方式1:可以到網(wǎng)站下載,點(diǎn)我跳轉(zhuǎn) 方式2:可以直接去網(wǎng)盤下載,點(diǎn)我跳轉(zhuǎn) 提取碼:8888 網(wǎng)盤里面也有python3.8.10的安裝包,下載后直接安裝即可。 下載 64位 winlibs-x86_64-posix-seh-gcc-11.3.0-llvm-14. 后,解壓到

    2024年02月05日
    瀏覽(22)
  • 【python】之pyinstaller模塊,python程序打包成一個(gè)可執(zhí)行exe 文件(超詳細(xì))!

    【python】之pyinstaller模塊,python程序打包成一個(gè)可執(zhí)行exe 文件(超詳細(xì))!

    PyInstaller是一個(gè)在Windows、GNU/Linux、macOS等平臺(tái)下將Python程序凍結(jié)(打包)為獨(dú)立可執(zhí)行文件的工具, 用于在未安裝Python的平臺(tái)上執(zhí)行Python編寫的應(yīng)用程序 使用pip接口進(jìn)行安裝 1.打開命令行: 切換到要轉(zhuǎn)換的python文件路徑,輸入上述指令。 (1)-F: 只生成一個(gè)單個(gè)文件(只有一個(gè)

    2024年02月12日
    瀏覽(22)
  • 【python】tkinter程序打包成exe可執(zhí)行文件 全流程記錄(windows系統(tǒng))

    【python】tkinter程序打包成exe可執(zhí)行文件 全流程記錄(windows系統(tǒng))

    【需求背景】 Tkinter 是 Python 的標(biāo)準(zhǔn) GUI 庫。Python 使用 Tkinter 可以快速的創(chuàng)建 GUI 應(yīng)用程序。 我用python寫了一個(gè)可視化界面,利用算法計(jì)算患COVID-19的概率。 現(xiàn)在需要將Python文件編譯成exe文件,這樣可以直接在Windows上運(yùn)行,不需要再依賴Python環(huán)境,可以復(fù)制到其他電腦中直接

    2024年02月01日
    瀏覽(34)
  • Python使用pyinstaller打包成.exe文件執(zhí)行后閃退的解決辦法

    Python使用pyinstaller打包成.exe文件執(zhí)行后閃退的解決辦法

    1、程序在PyChram中運(yùn)行正常,但是用pyinstaller將程序打包成.exe文件執(zhí)行后閃退; 2、使用cmd在在.exe文件處./執(zhí)行后,發(fā)現(xiàn)提示 No module named ‘ttkbootstrap’ ,沒有ttkbootstrap模塊; 3、在工程文件的venvLibsite-packages下,確實(shí)存在ttkbootstrap包;這個(gè)包不知什么原因沒打包進(jìn).exe文件,

    2024年02月12日
    瀏覽(111)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包