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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

PythonPyqt5项目开发完成后如何使用pyinstaller打包——以Pycharm编辑器为例(目前为止最正确的版本,成功打包日期为2020.11.26)

發布時間:2025/3/8 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PythonPyqt5项目开发完成后如何使用pyinstaller打包——以Pycharm编辑器为例(目前为止最正确的版本,成功打包日期为2020.11.26) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(請先看置頂博文)https://blog.csdn.net/GenuineMonster/article/details/104495419

?

?

最近用Python開發了一個可視化界面,開發過程如魚得水,幾乎沒有BUG出現(項目簡單)。但是在臨近交付時發現,打包這個項目有點令人發愁。不過,一切難題最終被我“斬于馬下”(踩過眾多坑的我,今天就給大家重現一下我是怎么掉進坑里的!)

為了方便大家閱讀,我先介紹打包過程,然后再介紹我出現的問題和打包心得:

一、打包

能看到這篇博問的同學想必是通過百度搜索pyinstaller如何打包Python項目、Python程序、Pyqt5程序進來的,那么我們就不多介紹pyinstaller這個打包程序了。在這次打包過程中,我使用的pyinstaller版本為4.0,而不是最新的4.1版本(實踐過程中覺得pyinstaller4.1版本有坑,天坑!)

第一步? 安裝pyinstaller 4.0

使用Terminal或者在Setting->Project Interpreter添加:

1、? ?Terminal方法:需要輸入的命令行如下所示

pip install pyinstaller==4.0

2、Setting->Project Interpreter中設置

第二步 拷貝主程序到項目文件的Lib路徑下

主程序就是指明整個項目是從哪開始運行的程序,尤其是包含下圖代碼的,那一定是主程序了(你自己寫的代碼,主程序是哪個py文件你還不知道?)。那么就有好奇寶寶問了,我自己的主程序在原來位置好好的,為什么還需要復制到項目文件的Lib路徑下?這是因為Lib文件下的site-packages里有我們的pyinstaller,我們在使用該工具時,得讓他找的到我們要打包的程序。如下圖所示,我已經把main_code.py復制到Lib文件夾里了。(是Lib文件夾,不是Lib、site-packages)如果你為自己的程序設計了圖標,同樣的道理,把圖標文件(****.ico)也要復制到Lib文件目錄下。

? ? ? ?? ? ?

第三步 在Pycharm的Terminal中執行打包命令? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

打開Pycharm的Terminal,并進入到lib目錄下,使用的命令為:“cd lib”,如下圖所示:

接下來,開始我們的打包,需要的打包命令有兩種,分別有不同的效果,建議大家按照我介紹的順序都用一下,先介紹第一種,其中有-D和-i選項,:

pyinstaller -D main_code.py -i cat.ico

-D:打包 Python 程序為一個文件夾
-i:生成圖標,只適用于 Windows 平臺(沒有圖標就不用加“-i cat.ico”)

? ? ? ?使用這個打包命令打包好的程序在運行時會出現“窗口控制臺”黑框,如下圖所示。如果你的代碼無法正常運行(在Pycharm里可以運行,不代表打包后的exe程序可以流暢運行),窗口控制臺就會出現錯誤提示,也相當于一個DeBug的過程。所以,在此我建議打包程序的同學,先運行這個命令,等到一切正常后,再使用第二類“命令”。值得注意的是,如果打包好的程序無法順利運行,這個黑框就會一閃而過,我們根本看不清錯誤提示。我也遇到了這個問題,我使用錄頻軟件,錄制了整個過程,放慢速度后才看清錯誤提示,最終解決了BUG。以下是打包命令從輸入到打包成功的Terminal截圖,由于項目路徑不同,所以僅供參考!打包完成后,有一些程序需要讀取的文件比如Excel文件、圖片等,一定要把這些文件全部復制到“dist\main_code”文件里。我打包好的exe程序位置是“\Lib\dist\main_code\main_code.exe”,所以我將程序所需要的文件都放在了和“main_code.exe”相同的目錄下。大家可以以我為例,對照著操作。對了,我使用的是相對路徑。另外,如果按照我介紹的步驟進行打包,就不要再參考其他的資料或者書籍了,防止不兼容。

第二種命令:

pyinstaller --noconsole -D main_code.py -i cat.ico

其中--noconsole就是取消“窗口控制臺”黑框的命令選項,這個命令是等到程序一切正常后才使用的。所以我先前就說了,一定要按照我介紹的順序打包兩次,這樣才可以保證打包的成功率。下圖是使用第二種命令打包成果的Terminal截圖。

同理,也需要將exe程序所需要的圖片、excel等文件復制到和exe同樣的目錄下。

二、踩過的坑


1、部分模塊版本高,無法兼容或自身存在BUG。

出現問題的模塊或包為:Pyqt5、pyinstaller、sumpy。在主程序開頭,我已將上述中的二者導入(pyinstaller是打包工具,不是環境),但是在運行時,總是報錯,其中就包含numpy1.19.4。如果你也出現與numpy相關的報錯信息并且環境恰好是1.19.4的版本,那么我建議你使用如下命令降低numpy版本。

先卸載原先的1.19.4版本,在Terminal里輸入以下命令:

pip uninstall numpy==1.19.4

隨后安裝低版本 1.19.3

pip install numpy==1.19.3

或者也可以在Pycharm的Setting里修改,用減號移除包,用加號增加所要的包。如下圖1、圖2所示,可進行包的增刪以及包版本的選擇。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖 1

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖 2

Pyqt5也出現了問題,我仿照numpy的處理方式降低了版本,打包程序就運行的順暢多了。pyinstaller也是同樣的道理。

2、自身代碼問題

我使用的編輯器是Pycharm,運行代碼時沒有任何問題,打包也打包成功了,就是在運行exe文件時提示“exit”沒有聲明。我反復觀察代碼,后來是發現代碼里有一處使用“exit”不規范導致的,更改后,重新打包,exe程序成功運行!所以就如我上面說的,編譯器不報錯,不代表打包成功后的程序能順利運行。

3、與程序相關的文件(如圖片、Excel文件等)

?上文也提到,在打包完成后,要把相關文件全部放入與可運行程序同一目錄文件夾下,如果你依賴的文件在打包之前就在一個文件夾A里,那么把A復制,粘貼到與exe程序同一文件夾“dist”內。與路徑相關的還有在編寫代碼時使用的是相對路徑還是絕對路徑,我這里使用的是相對路徑。

4、打包程序只需要打包主程序

打包主程序即可,打包軟件自動會把依賴的模塊或包打包進去,比如我在此次開發過程中用了Pyqt5。pyinstaller打包main_code.py時,自動將Pyqt5等模塊打包進去,無需我們一一指定。?

5、一條道走到黑

?在踩坑過程中,我試驗了百度、CSDN上能查到的各種方法,不同情況使用的命令不同,程序所需文件復制到的位置也不同,大腦一片混亂。我在打包過程中還在思索,就一個簡簡單單的打包過程為啥這么復雜,網上教程為何都不適用,但是功夫不負有心人,我最終打包成功!所以,大家千萬不要像我一樣(東拼西湊),靜下心來,把我這篇文章看完,一步一步去打包。打包成功了“收藏、關注、點贊、轉發”,打包不成功,你私信我,我盡量幫助你解決問題。

最后附上我使用Python模塊的版本搭配,希望對大家起到一個參考的作用。

?

?

?

總結

以上是生活随笔為你收集整理的PythonPyqt5项目开发完成后如何使用pyinstaller打包——以Pycharm编辑器为例(目前为止最正确的版本,成功打包日期为2020.11.26)的全部內容,希望文章能夠幫你解決所遇到的問題。

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