Python項(xiàng)目打包成二進(jìn)制的方法
Python項(xiàng)目打包
python本身是一種腳本語音,發(fā)布的話,直接發(fā)布源代碼就可以了,但是,可能有些公司并不想發(fā)布源代碼,那么,就涉及到打包了,網(wǎng)上有很的打包教程,其實(shí)我也沒有認(rèn)真去研究,因?yàn)槲抑幌牒唵吸c(diǎn),所以,我打算直接編譯成pyc二進(jìn)制文件來發(fā)布,就可以了。
問題
編譯成二進(jìn)制文件(*.pyc)之后,文件名都變了,模塊之間怎么引用?
網(wǎng)上的例子,大都是對單個(gè)文件編譯的介紹,對整個(gè)目錄編譯的話,也都是輸出到相應(yīng)的文件夾下,需要單獨(dú)抽取出來,發(fā)布。
解決問題
一般編譯之后的文件命名為:比如我的源文件為test.py,編譯后輸出到__pycache__文件夾下test.cpython-37.pyc,要保持模塊引用不改變,那么必須在編譯之后重命名為test.pyc文件,批注:37是因?yàn)槲沂褂玫膒ython版本為3.7.4所以含有37,其他版本要做相應(yīng)的調(diào)整。
需要按照原來的項(xiàng)目目錄結(jié)構(gòu)輸出pyc文件才能保證模塊之間調(diào)用沒有問題。
編碼實(shí)現(xiàn)
import os import shutil import compileall from pathlib import Path versions = ".cpython-37" pycache = "__pycache__" build_dir = "build" root = os.getcwd() print("正在編譯文件...請等待...") compileall.compile_dir(root) # 編譯 build = Path(root,build_dir) if build.exists(): print("正在移除build目錄...請等待...") shutil.rmtree(build) print("正在復(fù)制文件...請等待...") shutil.copytree(root,build) # 復(fù)制文件到build目錄 for root, dirs, files in os.walk(build): # 開始遍歷文件 # root 表示當(dāng)前正在訪問的文件夾路徑 # dirs 表示該文件夾下的子目錄名list # files 表示該文件夾下的文件list # 遍歷文件 for f in files: src = os.path.join(root, f) if f.endswith(".py"): os.remove(src) elif f.endswith(".pyc"): upper_dir = root.replace(pycache,"") dst = os.path.join(upper_dir,f.replace(versions,"")) shutil.copy(src,dst) for root, dirs, files in os.walk(build): # 移除緩存文件夾 print("正在移除緩存文件...請等待...") if root.endswith(pycache): shutil.rmtree(root) print("打包完成...請查看目錄:"+str(build))
注意文件中版本號的調(diào)整,基本上是通用的,所有的python項(xiàng)目都可以用拿來就用。代碼很簡單,但是很實(shí)用。
牛人之所以是牛人,是因?yàn)槟悻F(xiàn)在在踩的坑,他曾經(jīng)都已經(jīng)踩過了。
以上就是Python項(xiàng)目打包成二進(jìn)制的方法的詳細(xì)內(nèi)容,更多關(guān)于Python項(xiàng)目打包成二進(jìn)制的資料請關(guān)注腳本之家其它相關(guān)文章!
- 如何將自己的python庫打包成wheel文件并上傳到pypi
- 如何利用pyinstaller打包Python程序?yàn)閑xe可執(zhí)行文件
- 用Python將庫打包發(fā)布到pypi
- python腳本打包后無法運(yùn)行exe文件的解決方案
- 解決python 打包成exe太大的問題
- Python .py生成.pyd文件并打包.exe 的注意事項(xiàng)說明
- Python實(shí)現(xiàn)圖片指定位置加圖片水?。ǜ絇yinstaller打包exe)
- 史上最詳細(xì)的Python打包成exe文件教程
- python3.9實(shí)現(xiàn)pyinstaller打包python文件成exe
- python 利用Pyinstaller打包Web項(xiàng)目
- 使用Python中tkinter庫簡單gui界面制作及打包成exe的操作方法(二)
- python中如何打包用戶自定義模塊
- python打包多類型文件的操作方法
- Python打包exe時(shí)各種異常處理方案總結(jié)
相關(guān)文章
Flask框架debug與配置項(xiàng)的開啟與設(shè)置詳解
這篇文章主要介紹了Flask框架debug與配置項(xiàng)的開啟與設(shè)置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09Python安裝并操作redis實(shí)現(xiàn)流程詳解
這篇文章主要介紹了Python安裝并操作redis實(shí)現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Python?Paramiko上傳下載sftp文件及遠(yuǎn)程執(zhí)行命令詳解
這篇文章主要為大家介紹了Python?Paramiko上傳下載sftp文件及遠(yuǎn)程執(zhí)行命令示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Python使用正則表達(dá)式抓取網(wǎng)頁圖片的方法示例
這篇文章主要介紹了Python使用正則表達(dá)式抓取網(wǎng)頁圖片的方法,結(jié)合具體實(shí)例形式分析了Python網(wǎng)頁文件的讀取及正則匹配相關(guān)操作技巧,需要的朋友可以參考下2017-04-04Python3操作SQL Server數(shù)據(jù)庫(實(shí)例講解)
下面小編就為大家?guī)硪黄狿ython3操作SQL Server數(shù)據(jù)庫(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10帶你用Python實(shí)現(xiàn)Saga 分布式事務(wù)的方法
在這篇文章里,我們介紹了 SAGA 的理論知識,也通過一個(gè)例子,完整給出了編寫一個(gè) SAGA 事務(wù)的過程,涵蓋了正常成功完成,異常情況,以及成功回滾的情況,需要的朋友參考下吧2021-09-09Python?合并/拆分Excel的實(shí)現(xiàn)示例
有時(shí)對于多個(gè)工作表需要進(jìn)行合并或拆分,以便進(jìn)行瀏覽總結(jié),本文主要介紹了Python?合并/拆分Excel的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09