python打包py文件生成exe,以及運(yùn)行exe產(chǎn)生的問(wèn)題
1 安裝pyinstaller
pip install pyinstaller
我這里已經(jīng)安裝過(guò)了,就不再多說(shuō)啦!
2 用pyinstaller進(jìn)行打包
(1)選項(xiàng):
-F:表示生成單一的exe文件
-w:表示執(zhí)行exe文件時(shí)去除背后的dos窗口 ps:建議最初試驗(yàn)時(shí)保留dos,可以查看是否有錯(cuò)誤發(fā)生
-p:有些需要手動(dòng)添加包的位置(dir1,dir2)多個(gè)地址時(shí)以分號(hào)分開(kāi)
-i:加入圖標(biāo)
(2)打包一個(gè)py文件 添加圖標(biāo)(格式為ico的圖片):
pyinstaller -F XXX.py -i XX.ico
(3)打包多個(gè)py文件:
pyinstaller -F XXX.py -p XX.py -i XX.ico(以此類推)
運(yùn)行以后,會(huì)生成dist和build兩個(gè)文件夾,exe在dist文件夾下。如果程序需要用到附加的文件則添加到dist文件夾中即可。
3 運(yùn)行打包后的 多進(jìn)程exe程序出現(xiàn)的問(wèn)題
運(yùn)行之后 我發(fā)現(xiàn)計(jì)算機(jī)不怎么響應(yīng)了,而且很卡,打開(kāi)任務(wù)管理器:
一會(huì)電腦就馬上掛掉啦!這并不是我們想要的結(jié)果
接著在網(wǎng)上一番百度,終于找到解決問(wèn)題的辦法:
pyinstaller版本小于3.3的windows附加代碼(不過(guò)我的版本是3.4的不知道為什么還會(huì)出現(xiàn)這個(gè)問(wèn)題,反正添加上后程序運(yùn)行就正常啦)
新建一個(gè)wenke.py文件 添加如下代碼:
import os
import sys
import multiprocessing
# Module multiprocessing is organized differently in Python 3.4+
try:
# Python 3.4+
if sys.platform.startswith('win'):
import multiprocessing.popen_spawn_win32 as forking
else:
import multiprocessing.popen_fork as forking
except ImportError:
import multiprocessing.forking as forking
if sys.platform.startswith('win'):
# First define a modified version of Popen.
class _Popen(forking.Popen):
def __init__(self, *args, **kw):
if hasattr(sys, 'frozen'):
# We have to set original _MEIPASS2 value from sys._MEIPASS
# to get --onefile mode working.
os.putenv('_MEIPASS2', sys._MEIPASS)
try:
super(_Popen, self).__init__(*args, **kw)
finally:
if hasattr(sys, 'frozen'):
# On some platforms (e.g. AIX) 'os.unsetenv()' is not
# available. In those cases we cannot delete the variable
# but only set it to the empty string. The bootloader
# can handle this case.
if hasattr(os, 'unsetenv'):
os.unsetenv('_MEIPASS2')
else:
os.putenv('_MEIPASS2', '')
# Second override 'Popen' class with our modified version.
forking.Popen = _Popen
然后在mul_process.py中加入:
import wenke
然后在
if __name__ == '__main__':
下面加入:
multiprocessing.freeze_support()
添加完后,再次進(jìn)行打包,運(yùn)行程序 ok! 大功告成
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
