日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

Python如何生成exe文件?用Pycharm一步步帶你學(xué)(超詳細(xì)、超貼心)_python

作者:Nire_謁羽 ? 更新時(shí)間: 2022-04-25 編程語(yǔ)言

目的描述:

為了讓沒(méi)有安裝Python的人也能使用我們編寫(xiě)的.py文件,我們需要將編寫(xiě)好的Python程序生成.exe文件。

第一步 下載pyinstaller

pyinstaller插件是Python自帶的插件,用于為我們寫(xiě)好的代碼進(jìn)行打包,最終自動(dòng)合成.exe文件。

在Pycharm界面的最下面,你可以看到Terminal,選擇這個(gè)選項(xiàng),這就是一個(gè)終端界面。

在此界面寫(xiě)輸入指令: pip install pyinstaller 對(duì)pyinstaller進(jìn)行下載。

在下載過(guò)程中,可能會(huì)遇到一些錯(cuò)誤提示,解決方案可以參考我的另外幾篇博客:

常見(jiàn)錯(cuò)誤提示一:

You are using pip version 10.0.1, however version 20.0.2 is available.
You should consider upgrading via the ‘python -m pip install --upgrade pip’ command.

常見(jiàn)錯(cuò)誤提示二:

NoneType’ object has no attribute 'bytes

第二步 使用pyinstaller

在終端里輸入的指令為: pyinstaller -w -F XXX.py

但是對(duì)于初學(xué)者來(lái)說(shuō),這里要解釋的東西很多:

-w:表示希望在生成的.exe程序運(yùn)行過(guò)程中,不要出現(xiàn)cmd黑框(就是圖中的黑框)(注意:小寫(xiě)!)

-F:表示希望將所有的程序全部打包在一起,生成的只有一個(gè).exe文件,這樣的文件集成度高,但是運(yùn)行速度慢;如果不寫(xiě)-F,生成的還有一堆.dll文件,這樣的程序里文件很多,但是運(yùn)行速度比較快,這也是我們平時(shí)使用的程序的樣式(如圖)(注意:大寫(xiě)!)

XXX.py:指的是你整個(gè)項(xiàng)目的入口程序,大家寫(xiě)項(xiàng)目時(shí)很可能是多文件編程,你整個(gè)項(xiàng)目時(shí)靠哪個(gè)文件作為入口拉起來(lái)的,就填那個(gè)文件的名字。

常見(jiàn)錯(cuò)誤:

ValueError: script ‘C:\Users\Administrator.XXX.py’ not found

找不到XXX.py這個(gè)程序

解決方案:

pyinstaller找文件的方法是看你建立的那個(gè)工程文件夾里有沒(méi)有你寫(xiě)進(jìn)去的文件,而不是看子文件夾里有沒(méi)有。如果您是在子文件夾中寫(xiě)程序,可以把你寫(xiě)的所有程序都拷貝到工程文件夾中。

如果你在代碼中導(dǎo)入了圖片、文檔等與路徑相關(guān)的文件,注意修改路徑。

第三步: 找到生成的.exe文件

有不少同學(xué)都反映,沒(méi)有看到生成的.exe文件。

沒(méi)看見(jiàn)就對(duì)了,因?yàn)?exe文件根本不在工程文件夾下面。運(yùn)行pyinstaller -w -F XXX.py指令后,會(huì)生成兩個(gè)文件夾:一個(gè)叫build,另一個(gè)叫dist。

點(diǎn)開(kāi)dist文件夾,里面會(huì)有一個(gè)用你填進(jìn)去的XXX命名的文件夾,再點(diǎn)進(jìn)去,你就會(huì)看到XXX.exe文件。

理論上你已經(jīng)生成了.exe可執(zhí)行文件,這樣就完成了。如果你的.exe文件可以運(yùn)行起來(lái),那么恭喜你!但是實(shí)施情況是,這個(gè).exe文件運(yùn)行起來(lái)很有可能會(huì)有各種各樣奇葩的問(wèn)題:比如閃退、雙擊后直接消失了、程序莫名其妙地崩掉等。

總結(jié)

如果遇到這些問(wèn)題,大家千萬(wàn)不要慌張,因?yàn)檫@是很多人都會(huì)遇到的,網(wǎng)上也有很多人問(wèn)這樣的問(wèn)題,我在這里只是給大家提個(gè)醒,讓大家有個(gè)心理準(zhǔn)備。不要覺(jué)得自己勝利在望,結(jié)果被悶頭一棒。解決這些問(wèn)題我也花了很長(zhǎng)時(shí)間,之后我再專(zhuān)門(mén)寫(xiě)一篇博客來(lái)告訴大家如何解決這些問(wèn)題的,敬請(qǐng)期待。

原文鏈接:https://blog.csdn.net/Nire_Yeyu/article/details/10468388

欄目分類(lèi)
最近更新