导航:首页 > 源码编译 > pyc文件怎么编译

pyc文件怎么编译

发布时间:2023-05-15 07:52:04

‘壹’ python源代码程序文件扩展名

python源文件后缀是py。
以 py 扩展名的文件是 Python 源码文件,由 python.exe 解释,可在控制台下运行。可用文本编辑器读写。
Python中经常使用的文件后缀名:
pyc
以 pyc 为扩展名的是Python的编译文件。其执行速度快于 py 文件且不能用文本编辑编辑查看。所以 pyc 文件往往代替 py 文件发布。
Python 在执行时,首先会将 py 文件中的源代码编译成 PyCodeObject 写入 pyc 文件,再由虚拟机执行 PyCodeObject。
当 Python 执行 import 时会先寻找对应的 pyc或 pyd(dll)文件,如果没有则将对应的py文件编译写入 pyc 文件。pyc文件也可以通过 python -m py_compile src.py 生成。
pyw
pyw 文件与 pyc 文件相似,但 pyw 执行的时候不会出控制台窗口。开发(纯图形界面程序)时可以暂时把 pyw 改成 py 以调出控制台窗口调试。
pyo
pyo 是优化编译后的程序,不能用文本编辑器编辑。 python -O source.py 即可将源程序编译为 pyo 文件。
pyd
pyd 一般是 Python 外的其他语言如 C/C++ 编写的 Python 扩展模块,即 Python 的一个动态连接库,与 dll 文件相当。在linux系统中一般为.so文件

‘贰’ 如何编译Python程序生成.pyc文件

pyc文件就是 py程序编译后得到的字节码文件 (py->pyc),python为了提高运行效率也会进行编译,有时候编译出pyc文件后,删除py文件也不会出错助于pyc文件的产生,给楼主举例加入你有一个逻辑文件abcd.py,里面有很多函数A,B,C,D,这个时候,如果你有一个test脚本去导入了abcd.py,只要你运行test脚本,在adcd.py目录下就会生成一个abcd.pyc文件,而不管你是否需要调用A,B,C,D函数

‘叁’ python如何编译生成二进制文件

用py2exe 打包成可以执行文件

‘肆’ python写的程序,转成了exe文件,怎么进行反编译为python源码

1、电脑桌面,输入“win+R”组合键,在弹出窗口中输入“cmd”,点击确定。

‘伍’ 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-uncompyle反编译

python的编译后文尺蔽件pyc,可以将pyc文件反编译为py文件。

相应的工具: uncompyle

github地址: https://github.com/rocky/python-uncompyle6/

安装: pip install uncompyle

安装好后,注碰困衫意执行的命令为 uncompyle6 ,而不是 uncompyle 。

查看帮助命令:笑腔 uncompyle6 --help 、 uncompyle6 -h

反编译单个文件 : uncompyle6 foo.pyc > foo.py

反编译多个文件: uncompyle6 -o . *.pyc

例子:

‘柒’ python怎么编译成pyc文件

如下命令:

python-mcompileallxxx.py

可以对当前目录下的xxx.py文件生成pyc

‘捌’ PyInstaller打包、解包与反编译.pyc文件

PyInstaller官网: https://www.pyinstaller.org/

假设有一个demo.py文件,在同目录下启动命令行或从命令行进入当前文件夹,使用如下命令打包

打包后同目录下会产生两个文件夹build和dist(distribution),dist文件夹内就是目标程序。

解包使用pyinstxtractor工具
Github地址: https://github.com/extremecoders-re/pyinstxtractor
假设在第1步中,使用-F参数将demo.py打包为独立可执行文件demo.exe,进入dist文件夹,将pyinstxtractor.py放在该目录下,在该目录下启动命令行或从命令行进入该文件夹,使用如下命令解包

解包得到的内容将放入同目录下的demo.exe_extracted文件夹

找到目标.pyc文件,比如demo.pyc
反编译.pyc文件使用uncompyle6工具
Github地址: https://github.com/rocky/python-uncompyle6
可以直接通过pip安装uncompyle6

由于pyinstaller在打包可执行文件时会将.pyc文件头部的16字节magic head去掉,因此需要对需要反编译的.pyc文件进行预处理,将文件头部的16字节magic head补充完整。这里使用一个开源的16进制编辑器ImHex。
Github地址: https://github.com/WerWolv/ImHex
进入demo.exe_extracted文件夹,用16进制编辑器打开struct.pyc文件复制头部的16字节magic head,再用16进制编辑器打开demo.pyc文件,将头部的16字节改为magic head,即将图2中的部分更改为图1中的值即可。

使用前一个命令,反编译后的源码内容会显示在命令行窗口内;使用后一个命令,源码会打印到指定文件中,如demo.py。
到此为止可以

Invalid pyc/pyo file - Magic value mismatch!
补充magic head后即可正常反编译。

如果不是项目成员给所谓的程序而不肯给源码,而我又绕不过这个程序的问题,我才不想折腾这些有的没的。

‘玖’ 将.py 文件转换为.pyc 文件的命令要在哪里运行

在命令行输入:python-mpy_compilemyFile.py就可以生成对应的pyc文件了。之后就可以直接执行pyc文件。pythonmyFile.pyc。
python的pyc文件是一种二进制文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。
由于python程序的py文件很容易泄露源代码,所以python可以编译成保密的pyc文件。

阅读全文

与pyc文件怎么编译相关的资料

热点内容
安卓手机怎么群发小费才不会被锁 浏览:741
相机文件夹设置 浏览:855
centos7php怎么用 浏览:119
查看linux操作系统版本的命令 浏览:382
收支预算法怎么做 浏览:875
模板如何上传到服务器 浏览:372
如何同步安卓信息到新ipad 浏览:364
腾讯云轻量服务器流量警告 浏览:503
u盘备份linux 浏览:120
高压缩比活塞 浏览:92
压缩弹簧标准件 浏览:25
linux统计个数命令 浏览:292
cad转pdf居中 浏览:8
编译型语言处理过程 浏览:325
手机创文件夹复制到电脑 浏览:984
有什么直播APP可以看那种 浏览:41
程序员叫什么人 浏览:378
python画地图等高线 浏览:751
epic永劫无间是什么服务器 浏览:444
网游服务器下载地址 浏览:107