首頁 > 軟體

Pyinstaller+Pipenv打包Python檔案的實現範例

2022-03-02 10:00:26

相信大家都試過將Python檔案進行打包,來發給其他沒有安裝Python環境的使用者使用,但通常情況下,打包生成的exe檔案都很大,而產生這種情況的原因就是,打包並不會只打包我們所使用的一些庫,在我們日常使用的環境中,可能會有很多沒有用的關聯庫被一起打包。這時,建立一個虛擬環境就是最好的選擇,然後在虛擬環境中進行打包。

安裝pipnev

pipenv 用來管理虛擬環境,先安裝一下 pipenv

pip install pipenv

使用 pip show pipenv 檢查是否安裝成功。

前期準備

建立一個資料夾,來儲存虛擬環境相關檔案,並cd進入該資料夾下。

建立虛擬環境

pipenv install

進入虛擬環境

pipenv shell

安裝專案用到的庫

pip install pandas

如果數量比較多的話,可以新建一個requirements.txt檔案來儲存需要的庫名,一起下載。

再在虛擬環境中執行下面程式碼,記得修改requirements.txt檔案路徑,這裡新增了阿里映象速度要快些。

pip install -r D:requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

在虛擬環境中安裝pyinstaller

這一步至關重要,如果沒有在虛擬環境中安裝pyinstaller的直接打包的話,會使用預設python環境的pyinstaller進行打包,那麼,恭喜你前面都白做了。

pip install pyinstaller

使用pyinstaller打包

pyinstaller打包有不少可選引數,可以根據自己的需要進行新增。

-F:打包單個檔案,產生一個檔案用於部署(預設),如果程式碼都寫在一個 .py 檔案時使用,專案有多個檔案時不要使用

pyinstaller -F xxx.py

-D:打包多個檔案,產生一個目錄用於部署(預設),用於框架編寫的程式碼打包

pyinstaller -D xxx.py(專案入口檔案)

–key=keys:使用 keys 進行加密打包

pyinstaller --key=123456 -F xxx.py
  • -d:產生 debug 版本的可執行檔案
  • -p:用來新增程式所用到的包的所在位置,設定匯入路徑,可以用 ; ( Linux 使用 :)分割來指定多個目錄。
  • -w:表示不用控制檯視窗,使用 Windows 子系統執行,當程式啟動的時候不會開啟命令列(只對 Windows 有效)
  • -c:表示開啟控制檯視窗,使用控制檯子系統執行,當程式啟動的時候會開啟命令列(預設)(只對 Windows 有效)
  • -i:將 file.ico 新增為可執行檔案的資源,改變程式的圖示(只對 Windows 系統有效)

下面是我打包時用的程式碼。

  • ./1.ico:exe檔案圖示路徑
  • ./test.py:程式碼路徑
pyinstaller -F -w -i ./1.ico ./test.py

執行完之後,可執行檔案在dist資料夾下。

下面是兩種情況下打包的對比,可以看到在虛擬環境中打包生成的可執行檔案要小很多。

當然我們虛擬環境用完了之後,如果想要刪除虛擬環境,可以

pipenv --rm 刪除虛擬環境

這裡再給出一些pipenv的常用操作

pipenv --where                 列出本地工程路徑
pipenv --venv                  列出虛擬環境路徑
pipenv --py                    列出虛擬環境的Python可執行檔案
pipenv install                 建立虛擬環境
pipenv isntall [moduel]        安裝包
pipenv install [moduel] --dev  安裝包到開發環境
pipenv uninstall [module]       解除安裝包
pipenv uninstall --all         解除安裝所有包
pipenv graph                   檢視包依賴
pipenv lock                    生成lockfile
pipenv run python [pyfile]     執行py檔案

到此這篇關於Pyinstaller+Pipenv打包Python檔案的實現範例的文章就介紹到這了,更多相關Pyinstaller Pipenv打包Python 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com