这里写目录标题
- 1. pyc打包及重调用
- 2. Cython打包及重调用
1. pyc打包及重调用
-
该打包方式仅为入门级,反编译后为源代码,毫无安全性
-
指令转换
python -m py_compile /path/**.py
-
代码统一转换
单个py文件打包import py_compile py_file = [ "/home/txz/Data/推理可视化/ROS_ws/src/kitti_tutorial/scripts/utils/ID_Filter.py", "/home/txz/Data/推理可视化/ROS_ws/src/kitti_tutorial/scripts/utils/track_V2.py" ] for path in py_file: py_compile.compile(path)
目录级打包
import compileall compileall.compile_dir("/file_path")
-
生成的文件
文件位置一般默认在py文件同级目录下的 pycache
-
使用方法
一般而言,需要重命名文件,然后将其视为正常的python文件即可from __pycache__.box_v3 import Result_to_BoxArr
2. Cython打包及重调用
-
安全性拉满,速度也有提升
-
模块安装
pip3 install cython -i https://pypi.tuna.tsinghua.edu.cn/simple
-
py 模块的编译
先写一个gen.py,设置好需要编译py文件的路径from distutils.core import setup from Cython.Build import cythonize # py文件 py_files = ["/home/txz/Data/推理可视化/ROS_ws/src/kitti_tutorial/scripts/utils/ID_Filter.py", "/home/txz/Data/推理可视化/ROS_ws/src/kitti_tutorial/scripts/utils/box.py"] # 3代表python3 setup(ext_modules = cythonize(py_files, compiler_directives={'language_level' : "3"} ))
然后执行命令
python gen.py build_ext
-
文件的生成
.c文件:py文件所处路径下生成
.so文件:gen.py脚本所处路径下的build文件夹内, ubuntu 特有
-
模块的重新调用
修改上面.so文件名,并修改其文件名,起始把它视为正常的 .py 文件即可,用法一致,如下
调用方法和 py文件 一致,直接调用
from model.ID_Filter import ID_FILTER, Mult_ID_Filter