最近東家要求原始碼保密,要求連除專案經理外的其他成員也只能看到自己負責的那部分原始碼,於是乎就只能將原始碼編譯或製成庫後引入專案,最後還要求專案打包製成可執行程式。為了方便使用,本人將其製成了包,原始碼位址。
簡化python
程式的打包,支援.py
譯成.so
,保護原始碼
# build data將開始解析時
def hook_data(data: builddata): ...
# 已解析出專案中excludes項時
def hook_excludes(target: typing.list[str], data: builddata) -> typing.list[str]: ...
# 已解析出專案中ignores項時
def hook_ignores(target: typing.list[str], data: builddata) -> typing.list[str]: ...
# 已解析出專案中的包路徑項時
def hook_build_lib_path(target: typing.list[str], data: builddata) -> typing.list[str]: ...
# 已解析出專案中的資源檔案時
def hook_build_data(target: typing.list[typing.tuple[str, str]],
data: builddata) -> typing.list[typing.tuple[str, str]]: ...
# 已解析出專案中的隱藏匯入項時
def hook_build_imports(target: typing.list[str], data: builddata) -> typing.list[str]: ...
# 將開始編譯時
def hook_pre_compile(data: builddata): ...
# 已編譯完成時
def hook_compiled(data: builddata): ...
# 將開始build時
def hook_pre_build(data: builddata): ...
# 已build完成時
def hook_built(data: builddata): ...
具體使用可參照example
pip install pybuilder-exe
from pybuilder import run
# run函式定義
def run(name, target_file='', src_dir='', build_dir='', hook_file='', excludes_file='',
ignores_file='', single=_default_config.single, no_compile=_default_config.no_compile):
"""打包
:param name: 打包後的程式名
:param target_file: 入口檔案相對於`src_dir`的相對路徑
:param src_dir: 原始檔根目錄路徑,預設為執行環境的根目錄路徑
:param build_dir: build目錄路徑,預設為與執行環境的根目錄同級的`builder`目錄
:param hook_file: hook檔案路徑
:param excludes_file: `excludes`檔案路徑
:param ignores_file: `ignore`檔案路徑
:param single: 是否build為單檔案程式,預設為false
:param no_compile: 是否不編譯.py檔案,預設為false
:return:
"""...
pybuilder -h
[pybuilder-exe]python build tools
optional arguments:
-h, --help show this help message and exit
-n name, --name name the execution name.
-tf target_file, --target-file target_file
the target file path relative the sources
dir.(default: main.py)
-sd src_dir, --src-dir src_dir
the sources dir path.
-bd build_dir, --build-dir build_dir
the build dir path.
-hf hook_file, --hook-file hook_file
the .py file of hook build.
-ef excludes_file, --excludes-file excludes_file
the excludes file path.
-if ignores_file, --ignores-file ignores_file
the ignores file path.
-f build a single file execution.(default: false)
-nc, --no-compile not compile, only build.(default: false)
python專案打包發布總結
這裡主要收集python專案的打包 發布和部署的常用方法,只是入門級別,深入的流程還是以官方文件為準 鏈結每節都已經給出 distutils python自帶的基本安裝工具,適用於非常簡單的應用場景使用,不支援依賴包的安裝 通過distutils來打包,生成安裝包,安裝python包等工作,需要編寫...
Python專案打包發布方法
目前python打包工具有多個,目前比較好用的為pyinstaller,該工具可以支援在window和linux下使用。在windows下,大小為幾十k的原始檔打包成exe檔案,可能為幾十兆,原因是把程式所引用的庫檔案也一起打包在一起。如下以windows系統為例,分2個步驟,演示如何使用pyins...
python 工程專案打包遷移
開發環境是windows,生產環境是linux,需要把開發包在生產環境上部署。輸出所有包名 pip freeze requirement.txt 將原始碼儲存到本地目錄d ex pak pip install download d tools python36 ext pkg r requireme...