对python源码进行编译,加密python脚本

对python源码进行编译

1.生成.pyc文件

import py_compile

py_compile.compile(‘hello.py‘)

2.优化源码文件

python -O -m py_compile 1.py

生成.pyo文件

例子:

 1 [[email protected] tool]# python3
 2 Python 3.5.6 (default, May  3 2019, 01:52:28)
 3 [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
 4 Type "help", "copyright", "credits" or "license" for more information.
 5 >>> import py_compile
 6 >>> py_compile.compile(‘test_conn_linux.py‘)
 7 ‘__pycache__/test_conn_linux.cpython-35.pyc‘
 8 >>>
 9 >>> exit
10 Use exit() or Ctrl-D (i.e. EOF) to exit
11
12 #执行部分
13 [[email protected] __pycache__]# python3 test_conn_linux.cpython-35.pyc
14   序号:0       选择对象:172.16.132.4
15   序号:1       选择对象:192.168.1.111
16   序号:2       选择对象:47.106.169.222
17   序号:3       选择对象:172.16.132.3
18 请输入序号(Q|q退出)

原文地址:https://www.cnblogs.com/dennymami/p/10808720.html

时间: 2024-08-30 00:16:26

对python源码进行编译,加密python脚本的相关文章

《python源码剖析》笔记 Python的编译结果

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.python的执行过程 1)对python源代码进行编译,产生字节码 2)将编译结果交给python虚拟机,由虚拟机按照顺序一条一条地执行字节码,产生执行结果 图7-1 2.Python编译器的编译结果--PyCodeObject对象 Python编译器的编译结果中包含了字符串.常量值.字节码等在源代码中出现的一切有用的静态信息. 在Python运行期间,这些静态信息被PyCodeOb

《python源码剖析》笔记 Python虚拟机框架

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1. Python虚拟机会从编译得到的PyCodeObject对象中依次读入每一条字节码指令, 并在当前的上下文环境中执行这条字节码指令. Python虚拟机实际上是在模拟操作中执行文件的过程 PyCodeObject对象中包含了字节码指令以及程序的所有静态信息,但没有包含 程序运行时的动态信息--执行环境(PyFrameObject) 2.Python源码中的PyFrameObject

《python源码剖析》笔记 python虚拟机中的函数机制

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.Python虚拟机在执行函数调用时会动态地创建新的 PyFrameObject对象, 这些PyFrameObject对象之间会形成PyFrameObject对象链,模拟x86平台上运行时栈 2.PyFuctionObject对象 typedef struct { PyObject_HEAD PyObject *func_code: //对应函数编译后的PyCodeObject对象 Py

《python源码剖析》笔记 python对象初探

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.      在python中,对象就是为C中的结构体在堆上申请的一块内存.对象不能被静态初始化,也不能在栈空间生存.但内建的类型对象都是被静态初始化的. 2.      对象创建后大小不变.可变对象有一指针指向可变大小的内存区域. 3.      对象机制的基石:PyObject 定长对象: typedef struct _object{ PyObject_HEAD }PyObject

《python源码剖析》笔记 python环境初始化

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.线程环境初始化 Py_InitializeEx,Python会首先调用 PyInterpreterState_New创建一个崭新的PyInterpreterState对象. 创建了PyInterpreterState(进程状态)对象之后,Python会调用PyThreadState_New创建PyThreadState(线程状态)对象 全局变量_PyThreadState_Curren

《python源码剖析》笔记 python虚拟机中的一般表达式

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.字节码指令 LOAD_CONST:从consts表中读取序号为i的元素并压入到运行时栈中 STORE_NAME:改变local名字空间.从符号表names取序号为i的元素作为变量名, 取运行时栈的栈顶元素作为变量值,完成从变量名到变量值的映射关系的创建. BUILD_MAP:创建一个空的PyDictObject对象,并压入运行时栈 DUP_TOP:将栈顶元素的引用计数增加1,并将它再次

python源码剖析笔记1——Python对象初见

python源码剖析笔记1--Python对象初见 工作整两年了,用python最多,然而对于python内部机制不一定都清楚,每天沉醉于增删改查的简单逻辑编写,实在耗神.很多东西不用就忘记了,比如C语言,正好,python源码用C写的,分析python源码的同时又能温故C语言基础,实在是件很好的事情.另外,还有陈儒大神的<python源码剖析>做指引,分析也不至于没头没脑.期望在一个月的业余时间,能有所小成,以此为记. 1 python中的对象 python中,一切东西都是对象,在c语言实现

《python源码剖析》笔记 python中的List对象

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.PyListObject对象 --> 变长可变对象,可看作vector<PyObject *> typedef struct{ PyObject_VAR_HEAD //其中的ob_size表示实际被使用的内存的数量 PyObject **ob_item;//ob_item为指向元素列表的指针,实际上,Python中的list[0]就是ob_item[0] int allocat

《python源码剖析》笔记 python中的Dict对象

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.PyDictObject对象 -->  C++ STL中的map是基于RB-tree的,搜索时间复杂度是O(logN) PyDictObject采用了hash表,时间复杂度是O(1) typedef struct{ Py_ssize_t me_hash; //me_key的hash值,避免每次查询都要重新计算一遍hash值 PyObject *me_key; PyObject *me_