網(wǎng)站首頁 編程語言 正文
相信大家都試過將Python文件進行打包,來發(fā)給其他沒有安裝Python環(huán)境的用戶使用,但通常情況下,打包生成的exe文件都很大,而產(chǎn)生這種情況的原因就是,打包并不會只打包我們所使用的一些庫,在我們?nèi)粘J褂玫沫h(huán)境中,可能會有很多沒有用的關(guān)聯(lián)庫被一起打包。這時,創(chuàng)建一個虛擬環(huán)境就是最好的選擇,然后在虛擬環(huán)境中進行打包。
安裝pipnev
pipenv
用來管理虛擬環(huán)境,先安裝一下 pipenv
。
pip install pipenv
使用 pip show pipenv
檢查是否安裝成功。
前期準備
創(chuàng)建一個文件夾,來保存虛擬環(huán)境相關(guān)文件,并cd
進入該文件夾下。
創(chuàng)建虛擬環(huán)境
pipenv install
進入虛擬環(huán)境
pipenv shell
安裝項目用到的庫
pip install pandas
如果數(shù)量比較多的話,可以新建一個requirements.txt
文件來保存需要的庫名,一起下載。
再在虛擬環(huán)境中運行下面代碼,記得修改requirements.txt
文件路徑,這里添加了阿里鏡像速度要快些。
pip install -r D:\requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
在虛擬環(huán)境中安裝pyinstaller
這一步至關(guān)重要,如果沒有在虛擬環(huán)境中安裝pyinstaller
的直接打包的話,會使用默認python
環(huán)境的pyinstaller
進行打包,那么,恭喜你前面都白做了。
pip install pyinstaller
使用pyinstaller打包
pyinstaller打包有不少可選參數(shù),可以根據(jù)自己的需要進行添加。
-F:打包單個文件,產(chǎn)生一個文件用于部署(默認),如果代碼都寫在一個 .py
文件時使用,項目有多個文件時不要使用
pyinstaller -F xxx.py
-D:打包多個文件,產(chǎn)生一個目錄用于部署(默認),用于框架編寫的代碼打包
pyinstaller -D xxx.py(項目入口文件)
–key=keys:使用 keys
進行加密打包
pyinstaller --key=123456 -F xxx.py
-
-d:產(chǎn)生
debug
版本的可執(zhí)行文件 -
-p:用來添加程序所用到的包的所在位置,設置導入路徑,可以用
;
( Linux 使用:
)分割來指定多個目錄。 - -w:表示不用控制臺窗口,使用 Windows 子系統(tǒng)執(zhí)行,當程序啟動的時候不會打開命令行(只對 Windows 有效)
- -c:表示打開控制臺窗口,使用控制臺子系統(tǒng)執(zhí)行,當程序啟動的時候會打開命令行(默認)(只對 Windows 有效)
- -i:將 file.ico 添加為可執(zhí)行文件的資源,改變程序的圖標(只對 Windows 系統(tǒng)有效)
下面是我打包時用的代碼。
-
./1.ico
:exe文件圖標路徑 -
./test.py
:代碼路徑
pyinstaller -F -w -i ./1.ico ./test.py
運行完之后,可執(zhí)行文件在dist
文件夾下。
下面是兩種情況下打包的對比,可以看到在虛擬環(huán)境中打包生成的可執(zhí)行文件要小很多。
當然我們虛擬環(huán)境用完了之后,如果想要刪除虛擬環(huán)境,可以
pipenv --rm 刪除虛擬環(huán)境
這里再給出一些pipenv
的常用操作
pipenv --where 列出本地工程路徑 pipenv --venv 列出虛擬環(huán)境路徑 pipenv --py 列出虛擬環(huán)境的Python可執(zhí)行文件 pipenv install 創(chuàng)建虛擬環(huán)境 pipenv isntall [moduel] 安裝包 pipenv install [moduel] --dev 安裝包到開發(fā)環(huán)境 pipenv uninstall [module] 卸載包 pipenv uninstall --all 卸載所有包 pipenv graph 查看包依賴 pipenv lock 生成lockfile pipenv run python [pyfile] 運行py文件
原文鏈接:https://blog.csdn.net/qq_43965708/article/details/123212603
相關(guān)推薦
- 2022-06-12 python數(shù)據(jù)處理詳情_python
- 2022-07-03 C語言詳解strcmp函數(shù)的分析及實現(xiàn)_C 語言
- 2022-03-23 c++特殊構(gòu)造函數(shù)詳解_C 語言
- 2022-03-04 如何在uni-app中選擇一個合適的UI組件庫
- 2022-03-18 C語言回溯法解八皇后問題(八皇后算法)_C 語言
- 2022-04-06 C語言中斐波那契數(shù)列的三種實現(xiàn)方式(遞歸、循環(huán)、矩陣)_C 語言
- 2022-04-09 Object 轉(zhuǎn)Map,Map轉(zhuǎn)Object方式總結(jié)
- 2022-04-19 css隱藏??元素的幾種方式
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支