日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【pyinstaller打包pyqt5编写的项目为exe(脱离环境可运行)】

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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/ pyinstaller

0、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(脱离环境可运行)】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。