pyinstaller封装AutoML代码
作者:互联网
背景
自己开发了一套AutoML代码,虽然比不上市面上成熟的AutoML,但至少也是集多种祖传操作于一身,且可以直接输出公司需要的报告,但在一些联合建模的场景下,可能存在代码泄露的风险,所以最近在调研如何将代码封装起来
方法一:pyinstaller
step1:新建一个虚拟环境
一定一定要新建一个虚拟环境,由于pyinstaller会自动封装虚拟环境下的包,如果环境中有一些非必须的包,那么封装后的文件会十分的大!
第一次打包后生成的文件有300M,新建环境且仅安装必须的包后,打包生成的文件仅70M。
step2:代码改造
AutoML方法有很多入参,如果自动执行,如何读取这些入参呢?我想到用csv作为配置文件
具体做法是在同级目录下放置一个csv文件,里面存着所有入参,然后在主函数中读取这个csv即可
if __name__ == '__main__':
# 打包后的操作,读取config.csv并进行建模
df_params = pd.read_csv('./config.csv',encoding='gbk')
params_list = list(df_params['params'].values)
params_dict = {}
for param in params_list:
params_dict[param] = eval(df_params[df_params.params==param]['values'].values[0])
print(param,params_dict[param])
train = pd.read_csv(params_dict['train_path'])
test = pd.read_csv(params_dict['test_path'])
amp = AutoModelPlus(params_dict['outpath'])
在一台新机器上建模时,只要修改csv文件进行简单配置即可
step 3:打包
在step1中新建的虚拟环境下,执行pyinstaller -F 文件名.py(你的主函数文件),即可完成打包,常用参数如下
-h,--help | 查看该模块的帮助信息 |
---|---|
-F,-onefile | 产生单个的可执行文件 |
-D,--onedir | 产生一个目录(包含多个文件)作为可执行程序 |
-a,--ascii | 不包含 Unicode 字符集支持 |
-d,--debug | 产生 debug 版本的可执行文件 |
-w,--windowed,--noconsolc | 指定程序运行时不显示命令行窗口(仅对 Windows 有效) |
-c,--nowindowed,--console | 指定使用命令行窗口运行程序(仅对 Windows 有效) |
-o DIR,--out=DIR | 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件 |
-p DIR,--path=DIR | 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号,Linux 使用冒号)来分隔多个路径 |
-n NAME,--name=NAME | 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字 |
pyinstaller在打包过程中会在同级目录生成如下文件:
-
在工作目录生成 **.spec 文件;
-
创建一个 build 文件夹;
-
写入一些日志文件和中间流程文件到 build 文件夹;
-
创建 dist 文件夹;
-
生成可执行文件到 dist 文件夹(我们所需的可执行文件就在这个文件夹中)
-
如果编译中出现错误,会生成debug.log的日志文件;
windows中,会自动打包为.exe后缀的可执行文件,双击即可执行
linux中,会打包为一个无后缀的文件,使用 ./文件名 即可执行
step4:结果验证
经验证,使用封装文件建模,结果与使用源码建模相同
优点:简单、方便
缺点:无法跨平台,windows打包的文件只能在windows环境中执行
方法二:Cython生成pyd
待续。。。
标签:文件,pyinstaller,--,AutoML,params,封装,csv,打包,dict 来源: https://blog.csdn.net/slibra_L/article/details/110092298