专栏首页一日一工具python程序打包新姿势(nuitka)

python程序打包新姿势(nuitka)

python程序打包新姿势(nuitka)

换个方式针对python脚本进行打包, 有些时候我们写的一些脚本里面可能会包含SECRETPASSWORD相关的信息,但是这些脚本有的时候是需要给到其他部门的小伙伴使用,这个时候如何能保障账号密码的安全性呢(当然了,反编译还是防不住的), 获取之前你使用过pyinstaller解决过类似问题,今天我们要说的并不是pyinstaller, 而是nuitka

关于nuitka

Nuitka is a Python compiler written in Python. It's fully compatible with Python 2.6, 2.7, 3.3, 3.4, 3.5, 3.6, 3.7, and 3.8. You feed it your Python app, it does a lot of clever things, and spits out an executable or extension module.

Nuitka是用Python编写的Python编译器。支持Python 2.6、2.7、3.3、3.4、3.5、3.6、3.7和3.8等版本。将你的python程序打包成一个可执行文件。

官网和github

Nuitka对应的github地址[1]

Nuitka官网[2]

说明

单文件或目录

nuitkapyinstaller一样,也是支持生产单文件和目录形式的,如果没有指定,那就是目录形式的,所以要特别注意~

执行时间

复杂的程序进行打包的时候耗时是比较久的,打包速度这点比不上pyinstaller

产物大小

生成的二进制文件大小比较大,这也算是一个不好的点吧~

实战

配套脚本

# 这是官方文档提供的代码片段
# cat main.py
def talk(message):
    return "Talk " + message

def main():
    print( talk("Hello World"))

if __name__ == "__main__":
    main()

安装

pip install nuitka

简单使用

python -m nuitka --standalone  main.py

# 执行结果差异如下

hello-world-demo: python main.py
Talk Hello World


hello-world-demo: ./main.dist/main
Talk Hello World
hello-world-demo:

来个复杂的带配置文件的

原始代码我就不贴了,功能是用来添加阿里云站点监控功能的,之前尝试使用pyinstaller来进行打包,但是么有成功,失败的原因是因为aliyunsdkcore依赖了etry_config.json文件, 而pyinstaller并不能去获取到,我尝试添加目录也没有成功,今天试下nuitka看看是否能够成功。

# 打包前执行效果

aliyun-alert(master) ✗: python alertadd.py www.baidu.com
{"RequestId":"D1DD68D4-7D93-2C94-A362-DF9F1E8C46F4","Data":"29884879351CF69959852ABFC269EFEB26564237","Code":"200","Success":true}
{"RequestId":"048AF305-EC0A-4D3A-8722-C6D2FA163E46","Data":"7A2E57F9E7D1FF3ED242163231A403C526564237","Code":"200","Success":true}


# 打包

python -m nuitka --follow-imports --include-plugin-directory=/aliyun-alert alertadd.py


# 打包后执行效果

aliyun-alert(master) ✗: ./alertadd.bin www.baidu.com

{"RequestId":"E8D95559-9133-4A5E-AEC0-70581DB87A21","Data":"D64121A091FB85A818DB42268E8B5D3F26564254","Code":"200","Success":true}
aliyun-alert(master) ✗:

其他同类工具

nuitka工具的出色程度超出了我的预料(同样也是支持win的),哈哈,是真的香甜可口,除了我们前面提到的工具之后还有什么其他的么?同类工具对比图片来源[3]

总结

刚开始看到nuitka的介绍并没有觉得这个工具会比pyinstaller更好,或者更牛逼,因为个人在使用pyinstaller的时候并不如预期,也有可能我使用姿势不太对,真正的是尝试使用了下,发现还是先入为主的思维害了自己,用着还行~

引用链接

[1] Nuitka对应的github地址: https://github.com/Nuitka/Nuitka [2] Nuitka官网: http://nuitka.net/ [3] 同类工具对比图片来源: https://docs.python-guide.org/shipping/freezing/

本文分享自微信公众号 - 追马Linux(zhuima_k8s),作者:追马

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 4 个快速的 Python 编译器 f

    Python 其实是一种相当快的语言,但它并不像编译型语言那么快。 这是因为官方实现的 CPython 解释执行的,更准确地说,是 Python 代码被编译为字...

    py3study
  • 提高Python运行效率的六个窍门

    Python是一门优秀的语言,它能让你在短时间内通过极少量代码就能完成许多操作。不仅如此,它还轻松支持多任务处理,比如多进程。

    py3study
  • 让Python代码更快运行的 5 种方法

    不论什么语言,我们都需要注意性能优化问题,提高执行效率。选择了脚本语言就要忍受其速度,这句话在某种程度上说明了Python作为脚本语言的不足之 处,那就是执行效...

    小小科
  • 让 Python 变快的 5个方案

    Python 的运行速度确实没有 C 或者 Java 快,但是有一些项目正在努力让 Python 变得更快。

    Python进击者
  • 如何提高Python运行效率 超实用的四种提速方法

    Python增长势头一直非常迅猛,它虽然是脚本语言,但容易学,同时,还有非常多优秀的深度学习库可用,也有越来越多的人将Python学习列入计划。Python是一...

    企鹅号小编
  • 保护源码!加密你的 Python 程序代码!

    如果我们写的是图形界面程序,可能会打包成相应操作系统平台的二进制运行文件(当然也可能直接发 Python 代码给别人运行)。

    州的先生
  • 学Python的人这么多 有哪些技巧可言

    学Python的人这么多,有哪些技巧可言?用Python完成项目,编写的代码量更少,代码简短可读性强,团队协作开发时读别人的代码速度会非常快,使工作变得更加高效...

    一墨编程学习
  • Python一键转Jar包,Java调用Python新姿势!

    粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文。言归正传,咱们开始吧!

    轩辕之风
  • Python编写的桌面图形程序,如何实现版本更新和下载?

    在Python中我们有很多种方案来编写桌面图形用户界面程序,譬如内置的Tkinter、强大的PyQt5和PySide2,还有wxPython。借助这些或内置或第...

    州的先生
  • pyinstaller打包python程序

    CODER_D_XF
  • python之程序打包

    setup(name='Hello',version='1.0',description='A simple example',author='Magnus L...

    py3study
  • 01.如何把.py文件打包成为exe,重

    我自己用python写了一个小程序发给其他同事用,给他的就是一个.py文件,不过他觉得比较麻烦,还要安装环境,他问我有没有简单一点的方式,我给一个exe文件,他...

    py3study
  • 说说提高Python运行效率的技巧?

    答:不喜欢Python的人经常会吐嘈Python运行太慢。今天具体来说一下提高python执行效率的方法,下面给大家介绍10种方法 。

    用户1564362
  • python 程序打包成exe程序

    上一篇文章讲了如何实现一个简单的计算器程序,肯定你也想能不能做成像电脑桌面软件一样,不用安装python运行环境也可以运行,同时也可以分享给有需要的人。

    叶子陪你玩
  • MacOS : 前端必备姿势(工作环境)

    算是爬出来了...此篇的工作设备是(Macbook Pro 2017款,所以可能会说到 touchbar!)

    CRPER
  • 说说提高Python运行效率的技巧?

    小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。

    程序IT圈
  • Python代码一键转Jar包及Java调用Python新姿势

    以tensorflow、pytorch等为主的机器学习/深度学习的开发框架大行其道,助推了python这门曾经以爬虫见长(python粉别生气)的编程语言在TI...

    砸漏
  • python与安全(四)shell反弹

    反弹shell,就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。

    7089bAt@PowerLi
  • 使用 pyinstaller 打包 python 程序

    首先需要明确说明的是,版本问题,python2python2python2 与 python3python3python3 都有自己对应的 pyinstalle...

    f_zyj

扫码关注云+社区

领取腾讯云代金券