py2exe婴削,一個(gè)超酷的 Python 庫(kù)!

Python

大家好牙肝,今天為大家分享一個(gè)超酷的 Python 庫(kù) - py2exe。

Github地址:https://github.com/py2exe/py2exe


py2exe是一個(gè)流行的Python庫(kù)嗤朴,用于將Python腳本轉(zhuǎn)換成獨(dú)立的Windows可執(zhí)行文件(.exe)配椭。這使得Python程序能夠在沒(méi)有安裝Python解釋器的Windows系統(tǒng)上運(yùn)行,極大地?cái)U(kuò)展了Python程序的應(yīng)用范圍和便攜性雹姊。

安裝

安裝py2exe非常簡(jiǎn)單股缸,通常通過(guò)Python的包管理器pip進(jìn)行安裝:

pip install py2exe

請(qǐng)確保使用的是與Python版本兼容的py2exe版本。

特性

  • 獨(dú)立性:生成的.exe文件不需要依賴Python解釋器或任何外部庫(kù)即可在Windows上運(yùn)行吱雏。
  • 靈活性:支持多種生成模式敦姻,包括單文件和多文件輸出瘾境。
  • 兼容性:支持Python 2和Python 3的多個(gè)版本。

基本功能

創(chuàng)建可執(zhí)行文件

使用py2exe將Python腳本轉(zhuǎn)換為可執(zhí)行文件的基本步驟包括編寫一個(gè)setup腳本镰惦。

from distutils.core import setup
import py2exe

setup(console=['myscript.py'])

這個(gè)簡(jiǎn)單的setup腳本指定了要轉(zhuǎn)換的Python腳本(myscript.py)迷守,生成的將是一個(gè)命令行窗口程序。

配置文件

通過(guò)配置選項(xiàng)旺入,可以控制生成的可執(zhí)行文件的各種屬性兑凿,比如優(yōu)化級(jí)別、包含的模塊等茵瘾。

setup(
    options = {'py2exe': {'bundle_files': 1, 'compressed': True}},
    windows = [{'script': "myscript.py"}],
    zipfile = None,
)

在這個(gè)示例中礼华,所有的庫(kù)都被打包到單個(gè)可執(zhí)行文件中,且文件被壓縮拗秘。

高級(jí)功能

py2exe提供了許多高級(jí)功能圣絮,使得用戶可以自定義和優(yōu)化生成的可執(zhí)行文件,以滿足更復(fù)雜的應(yīng)用需求雕旨。

自定義圖標(biāo)

為生成的可執(zhí)行文件添加自定義圖標(biāo)扮匠,增強(qiáng)軟件的專業(yè)性。

from distutils.core import setup
import py2exe

setup(
    windows=[{
        'script': 'myscript.py',
        'icon_resources': [(1, 'appicon.ico')]
    }]
)

在這個(gè)示例中奸腺,icon_resources選項(xiàng)用于指定可執(zhí)行文件使用的圖標(biāo)文件餐禁。

包含非Python文件

經(jīng)常需要將配置文件、圖像或其他資源文件包括在生成的可執(zhí)行文件中突照。

setup(
    windows=[{'script': 'myscript.py'}],
    data_files=[('images', ['logo.png', 'background.jpg']), ('config', ['app.cfg'])],
    zipfile=None,
    options={'py2exe': {'bundle_files': 1}}
)

這個(gè)配置將指定的圖像和配置文件包括進(jìn)可執(zhí)行文件中帮非,bundle_files選項(xiàng)設(shè)置為1時(shí)會(huì)將所有文件打包到單個(gè)可執(zhí)行文件中。

使用鉤子解決導(dǎo)入問(wèn)題

在某些情況下讹蘑,py2exe可能無(wú)法正確識(shí)別程序依賴的所有模塊末盔,尤其是動(dòng)態(tài)導(dǎo)入的模塊∽浚可以通過(guò)鉤子手動(dòng)指定這些模塊陨舱。

setup(
    console=['myscript.py'],
    options={
        'py2exe': {
            'includes': ['some_dynamic_module']
        }
    }
)

處理復(fù)雜的依賴庫(kù)

對(duì)于使用了復(fù)雜依賴庫(kù)(如科學(xué)計(jì)算庫(kù))的程序,可能需要特別注意確保所有的依賴都正確打包版仔。

setup(
    console=['myscript.py'],
    options={
        'py2exe': {
            'dll_excludes': ['MSVCP90.dll'],  # 排除特定的DLL文件
            'packages': ['numpy', 'pandas']   # 確保包含numpy和pandas
        }
    }
)

優(yōu)化啟動(dòng)時(shí)間和文件大小

通過(guò)調(diào)整壓縮設(shè)置和優(yōu)化啟動(dòng)腳本游盲,可以顯著提高程序的啟動(dòng)速度和減少文件大小。

setup(
    console=['myscript.py'],
    zipfile=None,  # 將庫(kù)文件打包進(jìn)exe蛮粮,而不是zip益缎,可以提高啟動(dòng)速度
    options={
        'py2exe': {
            'compressed': True,  # 啟用壓縮
            'optimize': 2        # 啟用優(yōu)化
        }
    }
)

實(shí)際應(yīng)用場(chǎng)景

py2exe是一個(gè)非常實(shí)用的工具,特別適合于需要將Python應(yīng)用部署在沒(méi)有Python環(huán)境的Windows平臺(tái)上的情況然想。

單文件應(yīng)用部署

對(duì)于小型或中型的Python應(yīng)用莺奔,將所有依賴打包成單一的可執(zhí)行文件是一種常見的部署方式,便于分發(fā)和執(zhí)行变泄。

from distutils.core import setup
import py2exe

setup(
    options = {'py2exe': {'bundle_files': 1}},
    windows = [{'script': "myscript.py"}],
    zipfile = None,
)

這種方式將所有必要的庫(kù)文件和資源打包到一個(gè)單獨(dú)的執(zhí)行文件中令哟,用戶可以像運(yùn)行任何其他Windows程序一樣運(yùn)行它恼琼。

定時(shí)任務(wù)應(yīng)用

利用py2exe打包的應(yīng)用可以用于創(chuàng)建定時(shí)執(zhí)行的任務(wù),如自動(dòng)備份屏富、數(shù)據(jù)抓取等晴竞。

from distutils.core import setup
import py2exe

setup(
    console=['automated_task.py']
)

在這個(gè)例子中,automated_task.py可以是執(zhí)行定時(shí)數(shù)據(jù)庫(kù)備份的腳本役听,通過(guò)Windows的計(jì)劃任務(wù)調(diào)度器定時(shí)執(zhí)行颓鲜。

教育和演示工具

py2exe可用于教育和培訓(xùn),讓非技術(shù)用戶也能輕松運(yùn)行Python開發(fā)的演示程序典予。

setup(
    windows=[{
        'script': 'demo.py',
        'icon_resources': [(1, 'appicon.ico')]
    }],
    options={
        'py2exe': {
            'compressed': True
        }
    }
)

這個(gè)設(shè)置不僅包含了程序的圖標(biāo)定制甜滨,還通過(guò)壓縮選項(xiàng)減少了最終exe文件的大小。

企業(yè)應(yīng)用

在企業(yè)環(huán)境中瘤袖,py2exe可以用于快速部署內(nèi)部開發(fā)的工具衣摩,如報(bào)告生成器、數(shù)據(jù)分析工具等捂敌。

setup(
    console=['internal_tool.py'],
    options={
        'py2exe': {
            'includes': ['pandas', 'numpy']
        }
    }
)

這個(gè)示例確保了包括Pandas和NumPy這樣的數(shù)據(jù)處理庫(kù)也被正確包含在生成的exe文件中艾扮。

跨平臺(tái)GUI應(yīng)用

雖然py2exe主要用于Windows平臺(tái),但對(duì)于跨平臺(tái)開發(fā)的GUI應(yīng)用占婉,它可以為Windows用戶提供無(wú)縫體驗(yàn)泡嘴。

setup(
    windows=[{
        'script': 'gui_application.py',
        'icon_resources': [(1, 'appicon.ico')]
    }],
    options={
        'py2exe': {
            'includes': ['PyQt5']
        }
    }
)

在這種情況下,Python應(yīng)用通常使用像PyQt這樣的GUI框架開發(fā)逆济,通過(guò)py2exe打包后酌予,無(wú)需用戶安裝Python或任何依賴庫(kù)。

總結(jié)

Python的py2exe庫(kù)是一個(gè)極具價(jià)值的工具奖慌,專為將Python腳本轉(zhuǎn)換為獨(dú)立的Windows可執(zhí)行文件而設(shè)計(jì)抛虫。這一功能極大地方便了軟件的分發(fā)和部署,使得無(wú)需Python環(huán)境的Windows用戶也能輕松運(yùn)行Python程序简僧。py2exe支持廣泛的自定義選項(xiàng)建椰,包括單文件輸出、圖標(biāo)定制岛马、包含額外模塊和文件等棉姐,滿足了從簡(jiǎn)單腳本到復(fù)雜應(yīng)用的多樣化需求。其應(yīng)用場(chǎng)景包括企業(yè)內(nèi)部工具部署啦逆、教育演示谅海、定時(shí)任務(wù)自動(dòng)化等。通過(guò)py2exe蹦浦,開發(fā)者可以有效地?cái)U(kuò)展其Python項(xiàng)目的影響力,實(shí)現(xiàn)跨平臺(tái)的軟件解決方案撞蜂,提高程序的可接受度和便攜性盲镶。


Python學(xué)習(xí)路線

ipengtao.com

Python基礎(chǔ)知識(shí).png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末侥袜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子溉贿,更是在濱河造成了極大的恐慌枫吧,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宇色,死亡現(xiàn)場(chǎng)離奇詭異九杂,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)宣蠕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門例隆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人抢蚀,你說(shuō)我怎么就攤上這事镀层。” “怎么了皿曲?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵唱逢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我屋休,道長(zhǎng)坞古,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任劫樟,我火速辦了婚禮痪枫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毅哗。我一直安慰自己听怕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布虑绵。 她就那樣靜靜地躺著尿瞭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翅睛。 梳的紋絲不亂的頭發(fā)上声搁,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天捕发,我揣著相機(jī)與錄音疏旨,去河邊找鬼扎酷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谁榜。 我是一名探鬼主播幅聘,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼窃植,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼帝蒿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起巷怜,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤葛超,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后延塑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绣张,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年页畦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胖替。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡豫缨,死狀恐怖独令,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情好芭,我是刑警寧澤燃箭,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站舍败,受9級(jí)特大地震影響招狸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邻薯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一裙戏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧厕诡,春花似錦累榜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至寿羞,卻和暖如春猖凛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绪穆。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工辨泳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虱岂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓漠吻,卻偏偏與公主長(zhǎng)得像量瓜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子途乃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容