網(wǎng)站首頁 編程語言 正文
前言
對于專業(yè)的python程序員來說,python打包工具或許用得并不多。但是對于非專業(yè)人士來說,你給他寫個python項目,要讓他安裝python、安裝依賴等等,估計人都會抓狂。或者說,如果你不想暴露自己的項目代碼,python打包工具就派上用場了,市面上有多種打包工具,這里就講講最常用的pyinstaller的使用方法吧。
pyinstaller簡介
pyinstaller是一個python打包工具,它將python程序及所需依賴都打包成一個可執(zhí)行文件。
說詳細(xì)點就是:輸入指定的python腳本,pyinstaller首先會分析腳本所依賴的其他腳本,查找后將所有腳本收集起來(包括python解釋器),最后將這些文件放到一個目錄下,或者是打包到一個可執(zhí)行文件中。打包后我們只需要執(zhí)行可執(zhí)行文件即可,無需再安裝繁雜的python環(huán)境。
需要注意的是,pyinstaller不是交叉編譯器。就是說如果你要將python程序打包成一個能在windows運行的文件,那么你只能在windows上使用pyinstaller來完成打包過程,而不能在其他系統(tǒng)如linux、macos上打包。
pyinstaller下載
首先,因pyinstaller支持python的版本需>=3.7,所以我們要確保在python3.7或更新的版本上使用。
安裝:
pip install pyinstaller
下載完成后,運行pyinstaller -h
,顯示如下則安裝成功。
pyinstaller使用
準(zhǔn)備好程序代碼
這里以一個簡單的python程序為例,新建一個a.py文件,內(nèi)容如下:
import fire def print_msg(msg): print("print here:", msg) if __name__ == "__main__": fire.Fire(print_msg)
打包程序
常用到的命令:
標(biāo)題 | 參數(shù) | 說明 |
---|---|---|
-F | pyinstaller -F a.py | 在dist目錄下生成一個可執(zhí)行文件 |
-D | pyinstaller -D a.py | 在dist目錄中,除了可執(zhí)行文件,還會生成依賴文件 |
這里使用第一種方式來生成文件,執(zhí)行pyinstaller -F a.py
執(zhí)行后,我們可在當(dāng)前目錄下看到多了幾個文件/目錄,分別是a.spec、build目錄、dist目錄。
- .spec文件:記錄的是打包參數(shù)等信息,也可以預(yù)先準(zhǔn)備好spec文件直接打包。
- build目錄:記錄的是打包所產(chǎn)生的文件,我們可忽略。
- dist目錄:放的是可執(zhí)行文件及依賴,例子中dist目錄下的a文件就是可執(zhí)行文件。
$ ls a.py a.spec build/ dist/
$ ls dist a
運行一下試試:./dist/a 你好
$ ./dist/a 你好 print here: 你好
結(jié)果如預(yù)期,打包就完成了。接下來我們將dist目錄給到需要的人就行了。
小結(jié)
這里簡單介紹了pyinstaller的使用方法,在我們需要打包python程序的時候,pyinstaller是不二之選。特別需要注意的是,pyinstaller不能跨系統(tǒng)使用哦。
原文鏈接:https://juejin.cn/post/7132357317827739656
相關(guān)推薦
- 2022-08-15 python?time模塊時間戳?與?結(jié)構(gòu)化時間詳解_python
- 2022-11-22 GraphQL在react中的應(yīng)用示例詳解_React
- 2022-04-30 DataGridView設(shè)置單元格的提示內(nèi)容ToolTip_C#教程
- 2023-01-19 python全局解釋器GIL鎖機(jī)制詳解_python
- 2022-07-28 Python?Flask實現(xiàn)圖片上傳與下載的示例詳解_python
- 2022-06-24 Python利用隨機(jī)函數(shù)生成變化圖形詳解_python
- 2023-06-03 scipy稀疏數(shù)組dok_array的具體使用_python
- 2022-04-27 Shell中關(guān)于exit?0的那些坑_linux shell
- 最近更新
-
- 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)程分支