工具1. pyinstaller 用来打包python执行程序
安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
使用
pyinstaller -F main.py #打包到一个文件夹中
pyinstaller -D main.py #打包成一个exe程序
这个样打包的python脚本没有经过加密,不安全
工具2. cython 用户将python脚本反编译成动态库
安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cython
使用
创建脚本setup.py内容如下,所有需要编译的脚本都在deploy文件夹下,main.py入口脚本不能被编译成库,否则报入口程序missing
项目路径结构如下:
|---deploy|
| | abc.py, dd.py, face.py
|--setup.py
|--main.py
from distutils.core import setup
from Cython.Build import cythonize
setup(
name="anyface",
ext_modules = cythonize(["./deploy/*.py"], language_level=3)
)
然后在根目录下执行如下命令:生成所有脚本的.so文件
python ./setup.py build_ext --inplace
再执行如下命令打包
pyinstaller -F main.py
生成的程序可能无法运行,缺少各种模块或者动态库,需要编辑main.spec描述文件
动态库拷贝添加到下面数组中,第一个参数是源文件路径,第二个参数目标路径
binaries=[('/home/sd/software/nvidia/TensorRT-8.2.5.1/lib/libnvparsers.so.8', '.'),
('/home/sd/software/nvidia/TensorRT-8.2.5.1/lib/libnvinfer_plugin.so.8', '.')]
缺少的python模块添加到以下数组中,缺哪个补哪个
hiddenimports=['abc', 'numpy', 'cv2', 'onnx', 'onnxruntime', 'skimage'
'demjson'],
编辑完毕后执行如下命令生成程序
pyinstaller main.spec