Python代码打包成二进制可执行程序

Python代码打包成二进制可执行程序  https://www.jianshu.com/p/985c37ff7b2d 

【教程】将Python转为C语言并编译生成二进制文件  https://cloud.tencent.cn/developer/article/2375091 

python文件编译成二进制文件 python编译成二进制执行  https://blog.51cto.com/u_14405/7561397

把python脚本编译成二进制可执行文件  https://blog.csdn.net/yiduoyun_/article/details/135507998 

参考:

build - Is there a way to compile a python application into static binary? - Stack Overflow

Python和Cython有什么关系?python开发  https://blog.csdn.net/m0_59236602/article/details/127616456

为什么我使用Cython速度提高不多? https://www.zhihu.com/topic/19875055/hot 

[Python] Cython知识总结  https://zhuanlan.zhihu.com/p/586935390 

Cython 是什么?为什么会有 Cython? https://blog.csdn.net/chinesehuazhou2/article/details/125252492 

----------------------------------------------------------------------

为什么我使用Cython速度提高不多?

  https://www.zhihu.com/topic/19875055/hot 

如果你在cython里面只用c的原生类型,cdef所有函数和变量,不使用cdef list, cdef dict。使用malloc/free,不用 PyObject 引用计数。


那么我可以负责地说这样写的cython代码和纯c基本上是完全等价的。c有多快,cython就有多快。在这个假设下面cython和c的关系就完全是coffeescript 和 js的关系。


如果用了一些python特有的feature,比如cdef list, cdef dict,def __init__, def __dealloc__之类的,那么代码的效率就会接近python。有测试说cdef list和纯C的动态数组效率差30多倍。


所以cython既可以写出等价于C的代码,也可以写出等价于python的代码。cython最吸引人的地方是:一开始你可以写纯python的代码,然后慢慢通过 profiling 把性能瓶颈替换成 c原生类型和函数,直到满足你的需求。这个过程是渐进平滑的,而不是从头开始重写

编辑于 2024-03-28 02:08

====================================

摘录:Python代码打包成二进制可执行程序

 https://www.jianshu.com/p/985c37ff7b2d 

方案一:pyinstaller

这个方案简单易用,不仅可以打包可执行文件,还可以把所有依赖全部打包到一起,都不用考虑在执行的机器上安装Python环境。

但这种方式有个问题,Pyinstaller打包的可执行程序,运行时会启动两个进程。这种场景下,主进程Pyintaller加的,我的Python代码作为子进程启动,主进程的进程状态我没法在Python代码里控制,不能满足我的使用场景,所以只能第二种方案。


 

方案二:Cython

Cython的方式麻烦一点,但是满足我的需求。整体思路即:把Python代码转成C代码再编译成可执行程序。而Cython编译器就是一个很方便的转换工具。对比Pyinstaller打包的,Cython打包完之后,可能还需要自己把对应依赖的动态库也得带上,毕竟少了Pyintaller里面那么多import-hook工具帮你收集依赖。当然如果在执行的机器上装好Python环境就没必要打包依赖的动态库了。各有优劣,任君选择。

摘录:什么是Cython?让Python有C语言的速度

  https://baijiahao.baidu.com/s?id=1593543676299733105&wfr=spider&for=pc

Python的一个超集,可以编译为C,Cython结合了Python的易用性、和原生代码的速度

Python作为最方便,丰富的配置和彻底有用的编程语言之一而享有盛誉。 但执行速度?没那么快。

让我们开始了解Cython,Cython语言是Python的一个超集,编译成C语言,产生的性能提升可以从几个百分点到几个数量级,具体取决于手头的任务。 对于受Python原生对象类型约束的工作,加速将不会很大。 但是对于数值操作,或任何不涉及Python自身内部的操作,收益可能是巨大的。 这样,许多Python的本地限制可以被绕过或完全超越。

使用Cython,你可以避开Python的许多原生限制,或者完全超越Python,而无需放弃Python的简便性和便捷性。 在本文中,我们将介绍Cython背后的基本概念,并创建一个使用Cython加速功能的简单Python应用程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Python程序打包执行文件,可以使用第三方库PyInstaller。这个库可以将Python程序打包一个可执行二进制文件,无需安装Python解释器。 以下是一些基本步骤: 1. 安装PyInstaller ``` pip install pyinstaller ``` 2. 编写Python程序 假设你已经编写好了一个点名程序,可以使用Python的pandas库来读取Excel文件。以下是一个简单的示例程序: ```python import pandas as pd # 读取Excel文件 df = pd.read_excel('students.xlsx') # 随机抽取一个学生 student = df.sample() # 输出学生姓名 print(student['name'].values[0]) ``` 3. 打包程序 使用PyInstaller将程序打包执行文件: ``` pyinstaller --onefile myprogram.py ``` 这会生一个名为myprogram的可执行文件,可以在命令行中运行。如果你的程序中使用了其他依赖库,PyInstaller会将这些库一起打包。 4. 导入Excel文件 如果你想在打包后的程序中使用Excel文件,可以将Excel文件放在与可执行文件相同的目录下,然后在程序中使用相对路径来读取Excel文件: ```python import os import pandas as pd # 获取当前脚本所在目录 dirname = os.path.dirname(__file__) # 读取Excel文件 df = pd.read_excel(os.path.join(dirname, 'students.xlsx')) # 随机抽取一个学生 student = df.sample() # 输出学生姓名 print(student['name'].values[0]) ``` 这样,在打包后的程序中,可以直接读取与可执行文件相同目录下的Excel文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值