首页 > 编程语言 >python打包工具-Nuitka

python打包工具-Nuitka

时间:2023-04-26 19:55:16浏览次数:36  
标签:Nuitka python app -- Windows windows 打包

nuitka将python源码转成C++(这里得到的是二进制的pyd文件,防止了反编译),然后再编译成可执行文件。提高安全性和运行速度。

github:https://github.com/2267770481/cython_test

安装

pip install nuitka
pip install ordered-set # 加速编译
pip install zstandard # onefile时压缩文件

打包

目录结构
image
代码地址:https://files.cnblogs.com/files/yimeimanong/cython_test.zip?t=1682506730&download=true

windows下打包
python -m nuitka --standalone --show-memory --show-progress --nofollow-imports --plugin-enable=numpy --follow-import-to=apps --output-dir=out --windows-icon-from-ico=./favicon.ico app.py

执行结果:
image

等打包完后,会生成个out文件夹,里边的app.dist就是我们需要的东西。
image

如果直接运行 app.dist/app.exe 程序的时候,有时候会出现缺少某个模块的情况,这是因为我们只将自己的代码转成C++,不管这些大型的第三方包!。所以我们需要在python依赖包文件夹(Lib\site-packages)中找到这些包,并复制到app.dist中。(比较懒的做法是将site-packages中的所有文件直接复制到app.dist中,如果有出现冲突的就选择跳过)

现在可以直接运行app.exe应用程序。
image

接口调用
http://127.0.0.1:1111/module_a/a_a
image

linux 和 mac也可以用上边的指令

指令集

--mingw64 #默认为已经安装的vs2017去编译,否则就按指定的比如mingw(官方建议)
--standalone 独立环境,这是必须的(否则拷给别人无法使用) 不需要再安装python等之类的
--windows-disable-console 没有CMD控制窗口
--output-dir=out 生成exe到out文件夹下面去
--show-progress 显示编译的进度,很直观
--show-memory 显示内存的占用
--nofollow-imports:不编译代码中所有的import,比如keras,numpy之类的。
--follow-import-to=utils,src:需要编译成C++代码的指定的2个包含源码的文件夹,这里用,来进行分隔。
--enable-plugin=pyside6
--plugin-enable=tk-inter 打包tkinter模块的刚需
--plugin-enable=numpy 打包numpy,pandas,matplotlib模块的刚需
--plugin-enable=torch 打包pytorch的刚需
--plugin-enable=tensorflow 打包tensorflow的刚需
--windows-icon-from-ico=你的.ico 软件的图标
--windows-company-name=Windows下软件公司信息
--windows-product-name=Windows下软件名称
--windows-file-version=Windows下软件的信息
--windows-product-version=Windows下软件的产品信息
--windows-file-description=Windows下软件的作用描述
--windows-uac-admin=Windows下用户可以使用管理员权限来安装
--windows-disable-console:运行exe取消弹框。这里没有放上去是因为我们还需要调试,可能哪里还有问题之类的。
--linux-onefile-icon=Linux下的图标位置
--onefile 单文件打包
–-remove-output 在打包结束后,清理打包过程中生成的临时文件
--include-package=复制比如numpy,PyQt5 这些带文件夹的叫包或者轮子
--include-module=复制比如when.py 这些以.py结尾的叫模块

标签:Nuitka,python,app,--,Windows,windows,打包
From: https://www.cnblogs.com/yimeimanong/p/17356034.html

相关文章

  • windows下mysql5.7安装,及python操作mysql
    windows下mysql5.7安装mysql5.7官方下载:https://www.mysql.com/可参考教程:https://blog.csdn.net/qq_39715000/article/details/123534326?注意:一:my.ini配置文件:如果保存目录以t开头,默认会将t转义为空格(解决方法加这个\\):[mysqld]#端口号port=3306#mysql-5.7.27-winx6......
  • 树莓派4B-Python-控制超声波模块
    树莓派4B-Python-控制超声波模块超声波模块:超声波模块为常用的HC-SR04型号,有四个引脚,分别为Vcc、Trig(控制端)、Echo(接收端)、GND,使用起来也比较简单。在树莓派最新官方系统Raspbian中都安装有一个比较好使用的GPIO库,名为“gpiozero”,它包含了许多模块的使用函数,直接调用就好。参......
  • pycharm中python测试一直‘Instantiating tests...’转圈
    问题描述:defget_formatted_name(first,last):"""生成简洁的姓名"""full_name=first+""+lastreturnfull_name.title()importunittestfromname_functionimportget_formatted_nameclassNamesTestCase(unit......
  • 如何用Python画一只狗狗——turtle基础
    这只小狗主要用了turtle库里的circle()头有些方正,比较自然。话不多说,展示代码:fromturtleimport*pensize(5)seth(0)pd()color('black')circle(20,80)circle(200,30)circle(30,60)circle(200,29.5)circle(20,60)circle(-150,22)circle(-50,10)circle(5......
  • 如何用Python画奥运五环——circle()
    奥林匹克标志(theOlympicsymbol),又称奥运五环标志,是由《奥林匹克宪章》确定的奥林匹克运动在全球范围内的视觉形象标识。它由5个奥林匹克环从左到右互相套接组成,上方是蓝色、黑色、红色三环,下方是黄色、绿色二环,亦能以单色形式使用,整体造型为一个底部小的规则梯形。1913年,现代奥......
  • python 函数是对象
    defhi(name="yasoob"):return"hi"+nameprint(hi())#output:'hiyasoob'#我们甚至可以将一个函数赋值给一个变量,比如greet=hi#我们这里没有在使用小括号,因为我们并不是在调用hi函数#而是在将它放在greet变量里头。我们尝试运行下这个print(greet())#out......
  • Python基础
    list方法len返回list长度append往list末尾追加元素insert可以通过索引号插入指定位置,如果插入的位置之前没有元素,会追加到该位置myList=[0,1,2]myList.insert(5,5)print(len(myList))print(myList)//4//[0,1,2,5]pop删除list末尾的元素,如果要删除指定......
  • python与java 对应的加密算法
    python与java对应的加密算法1.gzip加密java的gzip加密:importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.util.Arrays;importjava.util.zip.GZIPInputStream;importjava.util.zip.GZIPOutputStream;publicclassHello{......
  • redis,python操作哨兵,python操作集群,缓存优化,缓存击穿,穿透,雪崩
    python操作哨兵高可用架构后》不能直接连接某一个主库》主库可能会挂掉,后来他就不是主库了之前的连接redis操作就不能用了importredisconn=redis.Redis(host='',port=6379)conn.set()conn.close()新的连接哨兵的操作连接哨兵服务器(主机名也可以用做域名)配置文件#redi......
  • Python中的del、pop、remove、clear
    del是Python中的一个关键字,用于删除变量、列表元素、字典键值对等1.删除变量:可以使用del关键字来删除变量,例如:a=10dela2.删除列表元素:可以使用del关键字来删除列表中的元素,例如:list=[1,2,3,4,5]dellist[2]3.删除键值对dict={'name':'Tom',,'age':18}deldict['nam......