網(wǎng)站首頁 編程語言 正文
相信大家都試過將Python文件進(jìn)行打包,來發(fā)給其他沒有安裝Python環(huán)境的用戶使用,但通常情況下,打包生成的exe文件都很大,而產(chǎn)生這種情況的原因就是,打包并不會只打包我們所使用的一些庫,在我們?nèi)粘J褂玫沫h(huán)境中,可能會有很多沒有用的關(guān)聯(lián)庫被一起打包。這時,創(chuàng)建一個虛擬環(huán)境就是最好的選擇,然后在虛擬環(huán)境中進(jìn)行打包。
安裝pipnev
pipenv
用來管理虛擬環(huán)境,先安裝一下 pipenv
。
pip install pipenv
使用 pip show pipenv
檢查是否安裝成功。
前期準(zhǔn)備
創(chuàng)建一個文件夾,來保存虛擬環(huán)境相關(guān)文件,并cd
進(jìn)入該文件夾下。
創(chuàng)建虛擬環(huán)境
pipenv install
進(jìn)入虛擬環(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
的直接打包的話,會使用默認(rèn)python
環(huán)境的pyinstaller
進(jìn)行打包,那么,恭喜你前面都白做了。
pip install pyinstaller
使用pyinstaller打包
pyinstaller打包有不少可選參數(shù),可以根據(jù)自己的需要進(jìn)行添加。
-F:打包單個文件,產(chǎn)生一個文件用于部署(默認(rèn)),如果代碼都寫在一個 .py
文件時使用,項目有多個文件時不要使用
pyinstaller -F xxx.py
-D:打包多個文件,產(chǎn)生一個目錄用于部署(默認(rèn)),用于框架編寫的代碼打包
pyinstaller -D xxx.py(項目入口文件)
–key=keys:使用 keys
進(jìn)行加密打包
pyinstaller --key=123456 -F xxx.py
-
-d:產(chǎn)生
debug
版本的可執(zhí)行文件 -
-p:用來添加程序所用到的包的所在位置,設(shè)置導(dǎo)入路徑,可以用
;
( Linux 使用:
)分割來指定多個目錄。 - -w:表示不用控制臺窗口,使用 Windows 子系統(tǒng)執(zhí)行,當(dāng)程序啟動的時候不會打開命令行(只對 Windows 有效)
- -c:表示打開控制臺窗口,使用控制臺子系統(tǒng)執(zhí)行,當(dāng)程序啟動的時候會打開命令行(默認(rèn))(只對 Windows 有效)
- -i:將 file.ico 添加為可執(zhí)行文件的資源,改變程序的圖標(biāo)(只對 Windows 系統(tǒng)有效)
下面是我打包時用的代碼。
-
./1.ico
:exe文件圖標(biāo)路徑 -
./test.py
:代碼路徑
pyinstaller -F -w -i ./1.ico ./test.py
運行完之后,可執(zhí)行文件在dist
文件夾下。
下面是兩種情況下打包的對比,可以看到在虛擬環(huán)境中打包生成的可執(zhí)行文件要小很多。
當(dāng)然我們虛擬環(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-07-16 mybatis的相同攔截器—切面執(zhí)行的順序
- 2022-04-04 vscode中將.art文件與html文件相關(guān)聯(lián)
- 2022-04-26 python?logging多進(jìn)程多線程輸出到同一個日志文件的實戰(zhàn)案例_python
- 2022-05-20 子查詢關(guān)鍵字-ALL、ANY、SOME、IN、EXISTS
- 2022-12-10 c語言如何設(shè)置隨機(jī)數(shù)及逐行解析_C 語言
- 2022-06-08 Spring源碼之Bean的掃描以及創(chuàng)建
- 2022-09-16 詳解ngx_cache_purge?_proxy_cache指令使用_nginx
- 2022-04-16 python多線程互斥鎖與死鎖_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支