当前位置: 首页 > news >正文

【python】使用Nuitka打包python项目-demo示例

文章目录

    • 写在前面
    • 参考
    • 准备工作
    • Quick Start
    • 参数说明
    • 使用打包程序
    • 输出目录结构
    • 日志
      • 2023.09.20

写在前面

本文的demo示例的代码/数据可从笔者的GitCode获取: HelloWorld

参考

  • Nuitka官网: https://github.com/Nuitka/Nuitka
  • Nuitka使用: https://daobook.github.io/nuitka-doc/zh_CN/user-manual.html#use-cases

准备工作

工作环境: Windowns10
python版本: Python 3.10.7

  1. 安装Nuitka

    pip install nuitka
    
  2. 下载 gcc

    下载地址 https://github.com/brechtsanders/winlibs_mingw/releases

    如果没有下载或下载的版本不对应的话,在打包时会提示相应安装包是否下载, 选择输入"Yes”下载即可. 如果自行下载的 gcc 包, 解压后配置用户环境变量, 将解压路径 xxx\bin 添加的用户环境变量中.

    PS: 笔者执行打包时, 还提示安装ccache, 选择Yes自动下载 使用的下载路径.

Quick Start

先构建项目demo脚本, 打印一些信息然后输入文件并读取第一列后再输出.

测试脚本:

python hello.py -i test/data.txt -o test/data.pro.txt

主脚本测试完成后, 开始打包:

# 开始打包主脚本 hello.py
python -m nuitka \--output-dir=./hellooo \--standalone --show-memory --show-progress \--follow-import-to=utils,src \--windows-icon-from-ico=./logo.ico \hello.py

参数说明

参数说明
–output-dir指定输出的结果路径
–standalone打包成独立的文件
–show-progress显示打包进度
–show-memory显示占用内存
–follow-import-to指定打包时同时打包的源码文件夹,用","分隔
–windows-icon-from-ico指定打包程序exe的图标
其他参数
–mingw64指定编译器
–nofollow-imports不编译代码中所有的import
–plugin-enable需要加载的插件
–windows-disable-console
–recurse-all
–recurse-not-to
–onefile
–remove-output
–disable-console

使用打包程序

打包程序在输出目录 outdir/xxx.dist/xxx.exe

# 打包程序看help
./hellooo/hello.dist/hello.exe --help# 使用打包后程序
./hellooo/hello.dist/hello.exe -i test/data.txt -o test/data.test_pack.txt

输出目录结构

执行打包程序后,输出目录的文件结构如下:

$ tree.com //a //f 
+---hello.build
|   |   .sconsign-310.dblite
|   |   @link_input.txt
|   |   build_definitions.h
|   |   ccache-24780.txt
|   |   module.src.c
|   |   module.src.const
|   |   module.src.o
|   |   module.src.source1.c
|   |   module.src.source1.const
|   |   module.src.source1.o
|   |   module.utils.c
|   |   module.utils.const
|   |   module.utils.o
|   |   module.utils.source2.c
|   |   module.utils.source2.const
|   |   module.utils.source2.o
|   |   module.__main__.c
|   |   module.__main__.const
|   |   module.__main__.o
|   |   scons-report.txt
|   |   __bytecode.const
|   |   __constants.bin
|   |   __constants.c
|   |   __constants.const
|   |   __constants.h
|   |   __constants.o
|   |   __constants.txt
|   |   __helpers.c
|   |   __helpers.h
|   |   __helpers.o
|   |   __loader.c
|   |   __loader.o
|   |
|   \---static_src
|           CompiledFunctionType.c
|           CompiledFunctionType.o
|           MainProgram.c
|           MainProgram.o
|
\---hello.disthello.exepython310.dllucrtbase.dllunicodedata.pydvcruntime140.dll_bz2.pyd_decimal.pyd_lzma.pyd

当前demo示例下删除了这些文件, 只保留了 hellooo/hello.dist/hello.exe主程序文件 (4.27M)。

日志

2023.09.20

  • 初始版本

相关文章:

【python】使用Nuitka打包python项目-demo示例

文章目录 写在前面参考准备工作Quick Start参数说明使用打包程序输出目录结构日志2023.09.20 写在前面 本文的demo示例的代码/数据可从笔者的GitCode获取: HelloWorld 参考 Nuitka官网: https://github.com/Nuitka/NuitkaNuitka使用: https://daobook.github.io/nuitka-doc/…...

Java多线程篇(5)——cas和atomic原子类

文章目录 CASAtomic 原子类一般原子类针对aba问题 —— AtomicStampedReference针对大量自旋问题 —— LongAdder CAS 原理大致如下: 在java的 Unsafe 类里封装了一些 cas 的api。以 compareAndSetInt 为例,来看看其底层实现。 可以发现,最…...

数据结构---栈和队列

栈(Stack) 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈&#xff1…...

2023-9-23 合并果子

题目链接&#xff1a;合并果子 #include <iostream> #include <algorithm> #include <queue>using namespace std;int main() {int n;cin >> n;priority_queue<int, vector<int>, greater<int>> heap;for(int i 0; i < n; i){in…...

基于QT和UDP实现一个实时RTP数据包的接收,并将数据包转化成文件

简单介绍&#xff1a;代码写的比较详细&#xff0c;需要留意的地方看结尾介绍 头文件 #ifndef RTPRECEIVER_H #define RTPRECEIVER_H#include <QDialog> #include <QUdpSocket> #include <QFile> #include <QTextStream> #include <httpclient.h&g…...

云原生安全性:保护现代应用免受威胁

文章目录 引言云原生安全性的挑战云原生安全性的关键实践1. 安全的镜像构建2. 网络策略3. 漏洞扫描和漏洞管理4. 认证和授权5. 日志和监控 云原生安全工具结论 &#x1f389;欢迎来到云计算技术应用专栏~云原生安全性&#xff1a;保护现代应用免受威胁 ☆* o(≧▽≦)o *☆嗨~我…...

R语言绘图-3-Circular-barplot图

0. 参考&#xff1a; https://r-graph-gallery.com/web-circular-barplot-with-R-and-ggplot2.html 1. 说明&#xff1a; 利用 ggplot 绘制 环状的条形图 (circular barplot)&#xff0c;并且每个条带按照数值大小进行排列。 2 绘图代码: 注意&#xff1a;绘图代码中的字体…...

解决Keil5下载没有对应芯片Flash的问题

问题描述 例如芯片是STM32F103ZET6&#xff0c;但是选项中并没有对应型号的芯片导致下载失败。 解决方法 1、寻找芯片安装包的具体位置&#xff0c;芯片安装包路径在软件安装过程中会有&#xff08;如图1所示&#xff09;。如果没有记录可以双击一下芯片安装包会直接提示。…...

深拷贝与浅拷贝(对象的引用)

可以用赋值 1.对象的引用 代码&#xff1a; <!-- 1.对象的引用 --><script>const info{name:"lucy",age:20}const objinfo;info.name"sam"console.log(obj.name) //sam</script>图解&#xff1a; 等于号的赋值&#xff0c;对象info…...

重新认识架构—不只是软件设计

前言 什么是架构&#xff1f; 通常情况下&#xff0c;人们对架构的认知仅限于在软件工程中的定义&#xff1a;架构主要指软件系统的结构设计&#xff0c;比如常见的SOLID准则、DDD架构。一个良好的软件架构可以帮助团队更有效地进行软件开发&#xff0c;降低维护成本&#xff0…...

我的创业笔记:困境与思索

现在是2023年9月22日傍晚&#xff0c;我一个人走在广州的珠江边&#xff0c;静静地思索着当前个人创业面临的困境&#xff0c;不由自主地想将这些想法记录下来。 故事需要从两个月前说起。2023年7月31号&#xff0c;我从金山办公离职后&#xff0c;就满心欢喜地开启了自己的个…...

minio文件上传

1.代码 大佬仓库&#xff1a;https://gitee.com/Gary2016/minio-upload?_fromgitee_search 关于这个代码的讲解&#xff1a;来自b站 2.准备minio 参考&#xff1a;[1]、[2] 2.1 下载 官网&#xff1a;https://min.io/download#/windows 2.2 启动 ①准备一个data文件夹…...

IDEA .iml文件及.idea文件夹详解

.iml文件 idea 对module 配置信息之意&#xff0c; infomation of module。每个模块都有一个iml文件。 IDEA中的.iml文件是项目标识文件&#xff0c;缺少了这个文件&#xff0c;IDEA就无法识别项目。跟Eclipse的.project文件性质是一样的。并且这些文件不同的设备上的内容也会…...

使用Python做一个微信机器人

介绍 简介 该程序将微信的内部功能提取出来&#xff0c;然后在程序里加载Python&#xff0c;接着将这些功能导出成库函数&#xff0c;就可以在Python里使用这些函数 程序启动的时候会执行py_code目录下的main.py&#xff0c;类似于你在命令行使用python main.py。 现在会以…...

云计算战略:选择适合你业务的云平台

文章目录 云计算的概述选择云平台的关键因素1. 业务需求2. 预算3. 性能要求4. 数据隐私和合规性 示例&#xff1a;选择适合的云平台业务需求预算性能要求数据隐私和合规性 代码示例&#xff1a;使用云平台服务结论 &#x1f389;欢迎来到云计算技术应用专栏~云计算战略&#xf…...

Python:打印目录下每层的文件总数

代码如下&#xff1a; import osclass FileCount(object):def __init__(self,root_path: str):self.root_path root_pathself._count Noneself._file_count Noneself.children []def get_count(self):if self._count is None:self._count 0self._file_count 0for child_…...

LVS-NAT模式

LVS负载均衡群集 群集的定义 Cluster&#xff0c;集群&#xff08;也称群集&#xff09;由多台主机构成&#xff0c;但对外只表现为一一个整体&#xff0c;只提供一-个访问入口(域名或IP地址)&#xff0c; 相当于一台大型计算机。 群集的作用 对于企业服务的的性能提升一般…...

【神印王座】龙皓晨竟然上了头版头条!内容违背,新闻真实性原则

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析神印王座国漫。 大家有没有发现&#xff0c;当龙皓晨他们从驱魔关回到圣城时&#xff0c;有这么一幕&#xff0c;一个卖报小孩边走边说&#xff1a;驱魔关大捷&#xff0c;少年英雄龙皓晨操控守护与怜悯之神印王座&#x…...

C++之类和函数权限访问总结(二百二十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

手动部署 OceanBase 集群

手动部署一个 OB 单副本集群&#xff0c;包括一个 OBProxy 节点 部署环境 服务器信息 IP地址 192.168.0.26 网卡名 ifcfg-enp1s0 OS Kylin Linux Advanced Server release V10 CPU 8C 内存 32G 磁盘1 本地盘 /data/1 磁盘2 本地盘 /data/log1 机器和角色划分 …...

【操作系统笔记十二】Linux常用基础命令

Linux 常用快捷键 Tab 命令或路径等的补全键&#xff0c;特别常用的快捷键Ctrl insert 复制命令行内容&#xff08;常用可提高效率&#xff09;Shift insert 粘贴命令行内容&#xff08;常用可提高效率&#xff09;Ctrl C 中断当前任务&#xff08;退出&#xff09;Ctrl Z…...

Compose LazyColumn 对比 RecyclerView ,谁的性能更好?

LazyColumn 是 compose 中用来实现类似 RecyclerView 效果的控件 &#xff0c;但是大家都说LazyColumn性能比RecyclerView差太多&#xff0c;毕竟 RecyclerView google优化了十多年了&#xff0c;比RecyclerView差一点也正常&#xff0c;今天我们就用实际数据来对比LazyColumn和…...

[python 刷题] 49 Group Anagrams

[python 刷题] 49 Group Anagrams 题目&#xff1a; Given an array of strings strs, group the anagrams together. You can return the answer in any order. An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically…...

vue+element plus 使用table组件,清空用户的选择项

<el-table ref"tableRef"> .... </el-table> <script lang"ts" setup> import { onMounted, reactive, ref, nextTick } from vue const clearBtn () > {console.log(清空用户的选择项)tableRef.value.clearSelection() } </scr…...

改写软件-怎么选择改写软件

什么是改写软件&#xff1f;改写软件是基于自然语言处理技术的工具&#xff0c;它们可以分析一段文字&#xff0c;并将其重新表达&#xff0c;以保持原始意义&#xff0c;但使用不同的词汇和结构。这种技术可用于减少内容的重复&#xff0c;增加多样性&#xff0c;或者简化复杂…...

gateway之跨域处理

文章目录 什么是跨域跨域带来的问题 gateway解决跨域解决跨域的其他方式比较代码示例 总结提升 什么是跨域 跨域&#xff08;Cross-Origin&#xff09;是指在浏览器中&#xff0c;当一个Web应用程序试图访问与其所属页面不同的源&#xff08;origin&#xff09;的资源时&#…...

uniapp 实现不同用户展示不同的tabbar(底部导航栏)

一、背景 最近在做一个uniapp开发的小程序遇到一个需求&#xff0c;希望不同用户登录后展示不同的tabbar页面&#xff0c;但是uniapp项目中的pages.json是只有一个list数组的&#xff0c;并且是不能写成动态效果&#xff0c;为了实现这个需求&#xff0c;便自定义了tabbar组件 …...

线性归一化是什么,用python实现数据的线性归一化

线性归一化&#xff08;Linear Normalization&#xff09;是一种常见的数据预处理方法&#xff0c;也被称为 Min-Max 归一化。它通过对原始数据进行线性变换&#xff0c;将其缩放到特定的范围内&#xff0c;常用的是将数据缩放到 [0, 1] 或 [-1, 1] 范围内。 具体来说&#xff…...

超级好用绘图工具(Draw.io+Github)

超级好用绘图工具&#xff08;Draw.ioGithub&#xff09; 方案简介 绘图工具&#xff1a;Draw.io 存储方式&#xff1a; Github 1 Draw.io 1.2 简介 ​ 是一款免费开源的在线流程图绘制软件&#xff0c;可以用于创建流程图、组织结构图、网络图、UML图等各种类型的图表。…...

全国职业技能大赛云计算--高职组赛题卷③(私有云)

全国职业技能大赛云计算--高职组赛题卷③&#xff08;私有云&#xff09; 第一场次题目&#xff1a;OpenStack平台部署与运维任务1 基础运维任务&#xff08;5分&#xff09;任务2 OpenStack搭建任务&#xff08;15分&#xff09;任务3 OpenStack云平台运维&#xff08;15分&am…...

wordpress中文相册插件/seo顾问服务公司站长

在C中&#xff0c;参数传递的方式是“实虚结合”。 按值传递(pass by value)地址传递(pass by pointer)引用传递(pass by reference)按值传递的过程为&#xff1a;首先计算出实参表达式的值&#xff0c;接着给对应的形参变量分配一个存储空间&#xff0c;该空间的大小等于该形参…...

宁波网站建设托管/重大新闻事件

html5--3.13 表单的新增属性 学习要点 掌握表单新增属性的使用HTML5新增表单属性 之前课程中已经接触过的新增属性&#xff1a;autocomplete属性/autofocus属性/list属性/multiple属性/placeholder属性/required属性/min/max/step属性form属性:将表单外的内容与表单进行关联nov…...

百度怎么自己做网站吗/品牌全案营销策划

使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本&#xff0c;然后分析一下你所抓取的网页&#xff0c;然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据&#xff0c;或是取一个XML文件并把其导入数据库&#xff0c;那怕就是简单…...

做网站需要会语言吗/百度关键词收录

首先后端要返回的数据格式为文件流的形式 响应头为: Content-Type:application/octet-stream 这是请求后端返回的信息: 前端axios请求: // 下载模板 const exportAlterExcelTemplate () > {return _ajax({url: /admin/vocabulary_manager/export_alter_excel_template,…...

wordpress 充值记录/电子商务营销策划方案

这两天一直在搞重定向&#xff0c;问题是一直看不明白&#xff0c;自己弄来弄去&#xff0c;都不成&#xff0c;我的想法是把 http:\\webmail 转到https:\\server\exchange&#xff0c;就是用户输入 http:\\webmail &#xff0c;就可以直接访问 https:\\server\exchange, 但是…...

福州b2c网站建设/seo免费外链工具

本文转自&#xff1a;http://blog.csdn.net/michael_ouyang/article/details/70755892 续上一篇的文章&#xff1a;微信小程序之商品属性分类 —— 微信小程序实战商城系列&#xff08;4&#xff09; 自从认识某人后&#xff0c;我收获了两个成功。登录成功、付款成功&#xf…...