Python 代码打包

news2024/12/28 20:03:31

这里写目录标题

  • 1. pyc打包及重调用
  • 2. Cython打包及重调用

1. pyc打包及重调用

  1. 该打包方式仅为入门级,反编译后为源代码,毫无安全性

  2. 指令转换

    python -m py_compile /path/**.py 
    
  3. 代码统一转换
    单个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")
    
  4. 生成的文件
    文件位置一般默认在py文件同级目录下的 pycache
    在这里插入图片描述

  5. 使用方法
    一般而言,需要重命名文件,然后将其视为正常的python文件即可

    from __pycache__.box_v3 import Result_to_BoxArr
    

2. Cython打包及重调用

  1. 安全性拉满,速度也有提升

  2. 模块安装

    pip3 install cython -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  3. 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
    
  4. 文件的生成
    .c文件:py文件所处路径下生成
    .so文件:gen.py脚本所处路径下的build文件夹内, ubuntu 特有
    在这里插入图片描述

  5. 模块的重新调用
    修改上面.so文件名,并修改其文件名,起始把它视为正常的 .py 文件即可,用法一致,如下
    在这里插入图片描述

    调用方法和 py文件 一致,直接调用

    from model.ID_Filter import ID_FILTER, Mult_ID_Filter
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于STM32设计的青少年学习监控系统(华为云IOT)

一、设计需求 1.1 项目背景 近几年,我国儿童青少年的近视发生率越来越高,生活中总会看到许多小小年纪就戴着眼镜的小朋友。家长对孩子的用眼时间没有约束,电子产品对孩子眼睛的影响,写字姿势,有的孩子写字时握笔太低,以致整个人趴在桌子上等都是造成孩子近视的重要因素…

c++ freetype 解析可变字体(Variable font)

什么是可变字体 上一篇文章说了 传送门也懒的贴了, 自己去翻吧 前言 我这里不会贴完整的代码 也不会说的那么细,主要提供一些关键点和方法 正文 ‘name’ 表table 解析 TrueType 字体的解析 字体里面有很多的表table 我们需要的family和style 都在这…

C++在线五子棋对战(网页版)项目:websocket协议

目标:认识理解websocket协议、websocket切换过程和websocket协议格式。认识和学会使用websocketpp库常用接口。了解websocketpp库搭建服务器流程,认识和学会使用websocketpp库bin接口,最后使用websocketpp库搭建服务器。 初识websocket WebS…

OJ# 384 敲七

题目描述 ​ 有 N 个人在玩一种“敲7”游戏,游戏的规则是这样的:第 x 个人从 t 开始报数,然后按顺序报数, 当某人报的数是 7 的倍数或数字中含有 7 时,便被淘汰,剩下的人继续报数,直到只剩下一…

【CesiumJS入门】(6)修改3D Tiles(tileset)的位置及高度

前言 在之前一篇博客中【CesiumJS入门】(4)加载3D Tiles并获取tileset,我们成功得加载了3D Tiles数据集,本篇中,将会向大伙儿介绍tileset位置的修改与恢复: 直接上代码了 /** Date: 2023-06-28 19:35:03*…

操作系统OS(二)进程和线程

进程 所谓进程,简单来说是计算机中的各种任务。 进程是程序的一次执行,是操作系统进行资源分配和调度的基本单位。 进程结构PCB 进程结构: 控制块PCB:进程唯一标识 程序段:同一个应用程序的多个进程 数据段&#xf…

Pytorch中的Exponential Moving Average(EMA)

EMA介绍 EMA,指数移动平均,常用于更新模型参数、梯度等。 EMA的优点是能提升模型的鲁棒性(融合了之前的模型权重信息) 代码示例 下面以yolov7/utils/torch_utils.py代码为例: class ModelEMA:""" …

ELK报错no handler found for uri and method [PUT] 原因

执行后提示no handler found for uri and method post,最新版8.2的问题? 原因: index.mapping.single_type: true在索引上 设置将启用按索引的单一类型行为,该行为将在6.0后强制执行。 原 {type} 要改为 _doc,格式如…

优炫软件自主研发再结硕果,共享存储SRAC集群数据库重磅发布

新一轮科技革命重塑全球经济结构,关键核心技术是产业发展的基石,数据库、芯片、操作系统是我国数字技术领域三大卡脖子难题。数据库向下发挥硬件算力,向上使能应用系统,是各行各业业务系统运行的基础,是软件行业皇冠上…

光口的作用及应用场景

在光通信中,交换机是一个非常重要的设备,它的作用是将来自不同设备的数据包进行收发和交换。之前发布的文章我们有了解到交换机的光口是如何配置的,本期文章我们将详细讨论交换机的光口的作用及应用场景。 一、光口的主要作用 交换机的光口…

适合团队人数少,预算低的四种办公室类型

如果团队人数少且预算低,以下是一些在深圳比较适合租赁的办公室类型: 1. 联合办公空间:联合办公空间是一种灵活的办公模式,通常提供共享的办公环境和设施,如会议室、休息区、打印机等。这种模式的办公室租金通常较低&…

Linux下Master-Master Replication Manager for MySQL 双主故障切换

简述: Master-Master Replication Manager for MySQL(MMRM)是一种用于MySQL数据库的主-主复制管理工具。它允许在多个MySQL主机之间建立双向的主-主复制关系,实现数据的同步和高可用性。 工作原理是通过在每个MySQL主机上配置双…

javascript 剪贴板数据

本篇文章将介绍在 JavaScript 中检测粘贴事件上的剪贴板数据。 JavaScript 剪贴板数据 当用户通过浏览器 UI 启动粘贴操作时,将引发粘贴事件。 当光标位于可编辑上下文中时,默认操作是将剪贴板的内容粘贴到光标位置的文档中。 此事件的处理程序可以通过…

性能优化 :删除项目中没有引用关系的文件 useless-files-webpack-plugin

一般此类包不需要安装到项目中,减少node_modules体积(以项目实际情况决定-S/-D) npm i useless-files-webpack-plugin -S然后再vue.config.js中配置 const UselessFile require(useless-files-webpack-plugin) chainWebpack: config > …

KEIL支持中文编辑

默认只支持英文,中文一粘贴就变成问号。怎么办? 菜单:Edit, Configuration 点击Encoding的下拉按钮,选择GB2312.

关于Http Header必须了解的知识

header是发送请求时携带的头部信息。通常一些鉴权的信息:authentication/cookie、响应的数据格式:content-type等等的设置。当然响应的数据也会返回一些头部信息。 Requests Header,请求头信息  Responses Header&…

自动化测试中如何比较颜色

引言 在做Nightwatch自动化测试中,出现需要比较颜色的时候如何来做? 基本的思路是首先需要取到这个element的颜色值,然后跟预期的颜色进行对比。 比如我要取下面这个会话窗口的颜色,选中这个图标,按F12,查…

Java实现office办公文档在线预览(word、excel、ppt、txt等)

文章目录 一、官网下载openOffice 安装包,运行安装(不同系统的安装请自行百度,这里不做过多描述) 二、pom中引入依赖 三、office文件转为pdf流的工具类 四、service层代码 五、controller层代码 office办公文档,如doc…

C语言编程—预处理器

预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CP…

文心一言 VS 讯飞星火 VS chatgpt (52)-- 算法导论6.2 4题

四、当i>A.heap-size/2 时,调用 MAX-HEAPIFY(A,i)会有什么结果? 文心一言: 当 i > A.heap-size/2 时,调用 MAX-HEAPIFY(A, i) 会将 A[i] 与其子树中的最大元素进行交换,并将 A[i] 视为新的根节点。这个操作会…