当前位置:首页 » 编程软件 » python半编译

python半编译

发布时间: 2023-10-25 12:46:24

python代码运行需要编译

有人在讨论 Python 代码是编译执行还是解释执行?这个问题还可以换一种说法: Python 是编译型语言还是解释型语言?回答这个问题

前,我们先弄清楚什么是编译型语言,什么是解释型语言。

所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下次运行时无需重新编译。不过它

是针对特定CPU体系的,这些目标代码只能在特定平台执行,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新编译。

它不具备可移植性,但是执行速度快,C、C++这类语言属于编译型语言。

而解释型语言是在代码运行期间逐行翻译成目标机器码,下次执行时,还是需要逐行解释,我们可以简单认为 Java、Python 都是解释型

语言。

编译型相当于厨师直接做好一桌子菜,顾客来了直接开吃,而解释型就像吃火锅,厨师把菜洗好,顾客需要自己动手边煮边吃,效率上来

说解释型语言自然比不过编译型语言,当然也不是绝对了,像 JIT 的效率就很高

以上是对编译型语言和解释型语言的一个简单粗暴的区分,但是 Python(这里主要是指CPython)并不是严格的解释型语言,因为

Python 代码在运行前,会先编译(翻译)成中间代码,每个 .py 文件将被换转成 .pyc 文件,.pyc 就是一种字节码文件,它是与平台无

关的中间代码,不管你放在 Windows 还是 linux 平台都可以执行,运行时将由虚拟机逐行把字节码翻译成目标代码。

我们安装Python 时候,会有一个 Python.exe 文件,它就是 Python 解释器,你写的每一行 Python 代码都是由它负责执行,解释器由

一个编译器和一个虚拟机构成,编译器负责将源代码转换成字节码文件,而虚拟机负责执行字节码,所以,解释型语言其实也有编译过

程,只不过这个编译过程并不是直接生成目标代码,而是中间代码(字节码),然后再通过虚拟机来逐行解释执行字节码。

总结

Python代码首先会编程一个字节码文件,再由虚拟机逐行解释,把每一行字节码代码翻译成目标指令给CPU执行。

推荐学习《Python教程》。

❷ Python命令行创建cocos2d-x项目,每次都要编译半个小时,如何解决

编译时间过长大约20年前就有解决方案,通常叫预编译。你检查一下编译器的开关选项。

如果有预编译缓存这样类似的功能就打开。这样以前编译过的代码,如果没有变更就不用编译了。 这样可以大大提高编译的速度。

如果它没有这个功能。你检查一下能不能自己控制编译步骤。比如自己设置一个脚本,检查如果已编译的模块就不再重复。最后只是链接一下就可以。

这样速度就可以提高几倍,也许10秒就编译完成了。

❸ python如何编译

1、说明

编译python程序就是把python脚本转换成操作系统中的可执行文件,一般使用pyinstaller来完成。

2、步骤

(1)安装pyinstaller

使用pip install pyinstaller命令来安装

(2)编译脚本

python安装目录scriptpyinstaller 脚本文件名

(3)完成

执行脚本后就可以在脚本目录生成dist目录,目录就有打包好的可执行文件

3、备注

pyinstaller参数

-w指令

直接发布的exe应用带命令行调试窗口,在指令内加入-w命令可以屏蔽。

-F指令

注意指令区分大小写。这里是大写。使用-F指令可以把应用打包成一个独立的exe文件,否则是一个带各种dll和依赖文件的文件夹

-p指令

这个指令后面可以增加pyinstaller搜索模块的路径。因为应用打包涉及的模块很多。这里可以自己添加路径。不过经过笔者测试,site-packages目录下都是可以被识别的,不需要再手动添加。

python学习网,大量的免费python视频教程,欢迎在线学习!

❹ 如何编译Python使之成为可执行程序

Python是一个强大的工具,可惜不是每个人的计算机里面都有安装。当您写了一个好用的工具。要如何让那些没有安装Python的人使用你的工具呢?
对于这样一个需要standalone exectuable环境的需求,直到撰写经验为止,只看到两个比较好用且有持续维护的套件。一个是py2exe。另外一个就是本经验要介绍的PyInstaller。
1
PyInstaller安装

2

最新版本:PyInstaller 2.0
3

直接“解压缩”之后即可使用,解压到您想让他在的路径即可
END

PyInstaller配置

1
事先写好py程序
2

在命令行执行:python Makespec.py --console --onefile NotePad\notepad.py
报错:Configfile is missing or unreadable. Please run Configure.py before building
3

在命令行执行:Configure.py
报错:Python 2.6+ on Windows support needs pywin32,Please install http://sourceforge.net/projects/pywin32/
4

安装最新版本的 pywin32-217.win32-py2.7.exe
END

PyInstaller使用

命令行中运行
目录切换到PyInstaller的安装目录“E:\pyinstaller-1.5\pyinstaller-1.

在PyInstaller的安装目录下新建一个文件夹(比如NotePad), 然后将要转换的py脚本放到文件夹里(notepad.py)
E:\pyinstaller-1.5\pyinstaller-1.5>python Makespec.py --console --onefile NotePad\notepad.py

E:\pyinstaller-1.5\pyinstaller-1.5>python Build.py NotePad\notepad.spec

验证exeE:\pyinstaller-1.5\pyinstaller-1.5>

E:\pyinstaller-1.5\pyinstaller-1.5\NotePad\dist\notepad.exe 0 0 100(成功)

查看生成的文件,生成的中间文件spec
查看生成的文件,生成的最终文件exe

END

注意事项

在转换之前要确保py程序可以正常通过
如果转换过程中出现什么错误,用搜索引擎搜索解决一下

❺ Python程序代码混淆、编译、打包、运行(桌面程序防破解向)

像Python这种解释性的语言,要想私有化部署的同时又保护好源码,就像是对于鱼和熊掌的追求。

虽然做不到尽善尽美,但是对代码进行混淆,增加一点破解的难度,或许能规避一些泄露的风险。

本次演示环境:linux

确保要发布的包根目录("demo")中有__main__.py文件,这个是程序执行入口。

编译

批量改名.pyc文件

移动.pyc文件

清理.py文件

清理__pycache__文件夹

打包成zip

运行时只要将zip文件作为参数即可

最终整合脚本

调用方式

对于在变量和函数名上的混淆有点小儿科,而对于跨文件的类名的混淆又太容易实现。

所以对于混淆程度的取舍,要视工程的规模而定。

2.1 混淆工具pyminifier

在原来的工具 pyminifier上修复了几个bug。

安装:

python3 安装

或者clone下来,自行安装

使用例子

2.2 源码变更

不同的配置对于源码的要求不同,以下是笔者踩过的坑。

其他混淆想法

结合混淆、编译和打包,尝试出以下发布脚本。

主要的思路 :创建一个工作目录tmp,然后在此目录下混淆、编译python代码,完成后把内容打包成pyc文件,再将pyc文件和其他配置文件移动到dist,发布dist即可。

混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解。

❻ Python是编译型语言还是解释型语言

Python是一种面向对象、解释型、动态类型计算机程序设计语言
解释型:程序无需编译成二进制代码,而是在执行时对语句一条一条编译
动态类型:在程序执行过程中,可以改变变量的类型
它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起

❼ python是编译器还是解释器

其实Python和Java/C#一样,也是一门基于虚拟机的语言
Python是编译+解释型的语言,执行的时候是由Python解释器,逐行编译+解释,然后运行,因为在运行的过程中,需要编译+解释,所以Python的运行性能会低于编译型语言,比如C++。为了提高性能,Python解释器,会将模块(以后要重用的脚本文件放在模块里)的编译+解释的结果,保存在.pyc中。这样下次执行的时候,就省了编译这个环节。提高性能。一次性的脚本文件,解释器是不会保存编译+解释的结果,也就是没有.pyc文件。
希望这个回答可以帮助到你。

热点内容
手机f加密 发布:2024-05-19 03:28:47 浏览:225
用什么密码写日记 发布:2024-05-19 03:27:57 浏览:303
数据库access2003 发布:2024-05-19 02:49:39 浏览:620
碧蓝航线pc挂机脚本 发布:2024-05-19 02:30:03 浏览:589
脚本fir 发布:2024-05-19 02:28:57 浏览:261
阿里云独享服务器 发布:2024-05-19 02:23:54 浏览:253
织梦源码ga 发布:2024-05-19 02:23:20 浏览:571
java文件名后缀 发布:2024-05-19 02:14:39 浏览:956
快手点榜脚本 发布:2024-05-19 02:08:44 浏览:163
pythonforinkeys 发布:2024-05-19 01:55:44 浏览:793