【pyinstaller打包pyqt5编写的项目为exe(脱离环境可运行)】
目錄
下載pyinstaller庫
0、pyinstaller語句介紹
1、單個py文件打包成exe
1)只有py文件
假設只有一個py文件:pyinstaller -F xxx.py
加上圖標:pyinstaller -F xxx.py -i xxx.ico
取消命令行窗口:pyinstaller -F -w xxx.py -i xxx.ico
2) 不但有py文件,還有其他格式的文件
?進入項目所在根目錄
運行得到spec文件:pyi-makespec main.py
修改 spec文件
執行 pyinstaller -F main.spec命令
2、多個py文件打包成exe
1)方法一:pyinstaller直接運行得到
2)方法二:多步驟進行
(1)使用命令行窗口進入項目的根目錄
(2)在改目錄下執行pyi-makespec main.py(main.py是你的主入口文件)
(3)修改main.spec文件
(4)執行 pyinstaller -F main.spec命令
(5)在dist/main文件夾里面點擊.exe文件
3、攜帶非py文件打包exe
1)同上述方法二所述
2)方法一+移動data文件夾
4、一些經驗和技巧
5、參考鏈接
下載pyinstaller庫
pip install pyinstaller
我這里是使用清華的鏡像下載的,因為直接使用 pip install 速度會慢一點,使用國內的鏡像網站那速度可蹭蹭的快啊。
pip install -i http://pypi.douban.com/simple/ pyinstaller0、pyinstaller語句介紹
pyinstaller -F -w -i xxx.ico xxx.py -p x:\...\site_packages
- -F:將xxx.py文件打包成一個獨立的可執行文件exe,exe文件名為xxx
- -w:運行exe時不會彈出命令行窗口,不加則在執行exe時會彈出命令行窗口
- -i:添加xxx.ico圖標
- -p:添加環境site-packages文件夾絕對路徑
1、單個py文件打包成exe
1)只有py文件
假設只有一個py文件:pyinstaller -F xxx.py
pyinstaller -F xxx.py
運行后會生成一個dist文件夾,文件夾內就是需要的exe文件
?
加上圖標:pyinstaller -F xxx.py -i xxx.ico
在線生成透明ICO圖標——ICO圖標制作http://www.ico51.cn/
pyinstaller -F xxx.py -i xxx.ico
取消命令行窗口:pyinstaller -F -w xxx.py -i xxx.ico
在運行上述命令生成的exe會出現命令行,取消則運行:
pyinstaller -F -w xxx.py -i xxx.ico
或者:
pyinstaller -F mycode.py --noconsole
2) 不但有py文件,還有其他格式的文件
有時候可能需要和一些配套的文件進行打包,比如圖像,TXT等,這時候按照下述進行
-
?進入項目所在根目錄
比如需要打包的文件為xxx.py,項目名為project,即project\xxx.py的結構
則在命令行通過cd ...\project 進入根目錄
如下圖假設就打包main,py文件為可執行文件exe,則是進入:bank中
-
運行得到spec文件:pyi-makespec main.py
假設文件為main.py,則運行:
pyi-makespec main.py
運行后會得到main.spec文件
-
修改 spec文件
剛開始main.spec文件打開后:data為空
1.要在第一行,也就是a = Analysis([‘main.py’])這里面添加你的所有的.py文件,注意是所有的而且只能是.py文件,第一個是代碼你的入口文件。
另外假如.py文件不是與你的主入口文件main.py文件在同一個目錄下,那么該文件要寫絕對路徑。
2.修改datas(放一些圖片音頻等文件),這里面是放非.py文件,這里是以元組的形式,(“文件夾的絕對路徑”,“文件夾名”)注意這里不是寫具體的文件名,而是文件夾。
下面是我修改過后的:
我這里data里面有一個.txt文件,像什么照片啦,音頻啦同樣的道理。
-
執行 pyinstaller -F main.spec命令
?pyinstaller -F -w -i tubiao.ico main.spec
運行后會得到一個dist文件夾,文件夾里面又一個以main命名的文件夾,在mian文件夾里面找到exe即可
2、多個py文件打包成exe
1)方法一:pyinstaller直接運行得到
### pyinstaller 所有需要打包的py文件 -p 環境site-packages絕對路徑
### 注意:py文件的路徑需要以第一個py文件為準
pyinstaller -w -i data\\fa.ico firstUI_logic.py firstUI.py getFeathers.py nms.py operateUI.py operateUI_logic.py? -p D:\softwares_install\Anaconda3\envs\Train\Lib\site-packages
運行后會得到dist,在dist里面的firstUI_logic文件夾中找到exe文件即可
2)方法二:多步驟進行
(1)使用命令行窗口進入項目的根目錄
我這里就是 進入到E:\ljl\bank。
(2)在改目錄下執行pyi-makespec main.py(main.py是你的主入口文件)
執行完畢之后,會生成一個main.spec文件
(3)修改main.spec文件
剛開始main.spec文件打開后是
1.要在第一行,也就是a = Analysis([‘main.py’])這里面添加你的所有的.py文件,注意是所有的而且只能是.py文件,第一個是代碼你的入口文件。
另外假如.py文件不是與你的主入口文件main.py文件在同一個目錄下,那么該文件要寫絕對路徑。
2.修改datas(放一些圖片音頻等文件),這里面是放非.py文件,這里是以元組的形式,(“文件夾的絕對路徑”,“文件夾名”)注意這里不是寫具體的文件名,而是文件夾。
下面是我修改過后的:
我這里data里面有一個.txt文件,像什么照片啦,音頻啦同樣的道理?
(4)執行 pyinstaller -F main.spec命令
在界面中輸入 pyinstaller -F -w -i tubiao.ico pyexe.spec(-i 后面跟著的是exe程序的圖標,最后跟.spec文件)
(-F:產生一個文件;-w:使用Windows子系統執行,不會打開命令行)
pyinstaller -F mycode.py --noconsole
還可以這樣pyinstaller -F -w mycode.spec (-w就是取消窗口)
這時候會生成兩個文件夾,build和dist。然后.exe文件就在里面,快點開看看吧。
(5)在dist/main文件夾里面點擊.exe文件
運行后會得到dist,在dist里面的firstUI_logic文件夾中找到exe文件即可?
3、攜帶非py文件打包exe
1)同上述方法二所述
2)方法一+移動data文件夾
- 運行方法一會得到dist文件夾,dist文件夾中會有一個firstUI_logic文件夾
- 將存放了非py文件的data文件移動到firstUI_logic文件夾下即可
注意:因為涉及到非py文件,所以在py文件編寫的時候,涉及到引用這些非py文件時,需要對文件的根目錄進行獲取:
一般是先自動獲取得到當前exe的根目錄dirfile;
然后通過字符串拼接來得到非py文件的具體文件夾:dirfile + "\data\非py文件名"
4、一些經驗和技巧
1)在編寫時,盡量使用from xxx import xxx,而不是直接import xxx,然后通過xxx.xxx來使用。比如from cv2 import imread,和import cv2,前者只是導入了imread,而后者直接復制了cv2,導致后續打包的exe過大
2)根據以往的經驗一般是使用【方法一+移動data文件夾+保留命令行窗口】方法來進行打包,成功率高,且通過命令行來進行exe運行,可以看到有什么異常進而進行修改
pyinstaller? -i data\\fa.ico firstUI_logic.py firstUI.py getFeathers.py nms.py operateUI.py operateUI_logic.py? -p D:\softwares_install\Anaconda3\envs\Train\Lib\site-packages
注意沒有-w,保留了命令行窗口
3)有時候可能會出現導入包錯誤,可能在打包好的文件夾中對應的包位置缺少了相應的pyd文件,比如pyinstaller打包執行exe出現“ModuleNotFoundError: No module named ‘scipy.spatial.transform._rotation_group”
?
上述其實就是說明在打包完成的dist文件夾中的文件夾中對應的庫中缺少pyd文件,需要補充上,具體見:
pyinstaller打包執行exe出現“ModuleNotFoundError: No module named ‘scipy.spatial.transform._rotation_group”_python_AI_fans的博客-CSDN博客https://blog.csdn.net/qq_45769063/article/details/112713682
.py文件轉為.pyd文件_李鑫玉的博客-CSDN博客_python py轉pydhttps://blog.csdn.net/qq_41007606/article/details/109565069
5、參考鏈接
【項目實戰】——Python打包正裝換底色代碼為exe文件(可在其他無Python環境下運行)_python_AI_fans的博客-CSDN博客https://blog.csdn.net/qq_45769063/article/details/109128507
總結
以上是生活随笔為你收集整理的【pyinstaller打包pyqt5编写的项目为exe(脱离环境可运行)】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 11 Python之初识函数
- 下一篇: centos踩坑指南之安装compose