当前位置:首页 » 编程语言 » python编译pyc

python编译pyc

发布时间: 2022-06-04 10:59:24

python 怎么编译pyc文件

如下命令:

1
python -m compileall xxx.py
可以对当前目录下的xxx.py文件生成pyc

⑵ pyc能编译吗

生成单个pyc文件
python就是个好东西,它提供了内置的类库来实现把py文件编译为pyc文件,这个模块就是 py_compile 模块。
使用方法非常简单,如下所示,直接在idle中,就可以把一个py文件编译为pyc文件了。(假设在windows环境下)

import py_compile
py_compile.compile(r'H:/game/test.py')

compile函数原型:
compile(file[, cfile[, dfile[, doraise]]])
file 表示需要编译的py文件的路径
cfile 表示编译后的pyc文件名称和路径,默认为直接在file文件名后加c 或者 o,o表示优化的字节码
dfile 这个参数英文看不明白,请各位大大赐教。(鄙视下自己)原文:it is used as the name of the source file in error messages instead of file
doraise 可以是两个值,True或者False,如果为True,则会引发一个PyCompileError,否则如果编译文件出错,则会有一个错误,默认显示在sys.stderr中,而不会引发异常
(来自python2.5文档)
批量生成pyc文件
一般来说,我们的工程都是在一个目录下的,一般不会说仅仅编译一个py文件而已,而是需要把整个文件夹下的py文件都编译为pyc文件,python又为了我们提供了另一个模块:compileall 。使用方法如下:

import compileall
compileall.compile_dir(r'H:/game')

这样就把game目录,以及其子目录下的py文件编译为pyc文件了。嘿嘿,够方便吧。来看下compile_dir函数的说明:

compile_dir(dir[, maxlevels[, ddir[, force[, rx[, quiet]]]]])
dir 表示需要编译的文件夹位置
maxlevels 表示需要递归编译的子目录的层数,默认是10层,即默认会把10层子目录中的py文件编译为pyc
ddir 英文没明白,原文:it is used as the base path from which the filenames used in error messages will be generated。
force 如果为True,则会强制编译为pyc,即使现在的pyc文件是最新的,还会强制编译一次,pyc文件中包含有时间戳,python编译器会根据时间来决定,是否需要重新生成一次pyc文件
rx 表示一个正则表达式,比如可以排除掉不想要的目录,或者只有符合条件的目录才进行编译
quiet 如果为True,则编译后,不会在标准输出中,打印出信息
(来自python2.5文档)
总结
通过上面的方法,可以方便的把py文件编译为pyc文件了,从而可以实现部分的源码隐藏,保证了python做商业化软件时,保证了部分的安全性吧,继续学习下,看怎么修改opcode。

⑶ python如何编译生成二进制文件

1、可以
2、当你编辑运行py文件后,就会生成对应文件名的pyc文件。
3、pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的。
总之,是可以的

⑷ 如何手动编译成pyc,可以直接执行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源码编程成pyc后,怎么防止反编译

无法防止反编译,但可以混淆,让你即使反编译了,也看不懂语法
下面一段源码

sd=1

defseed(s):
globalsd
sd=s

defrandn(n):
globalsd
sd=(sd*1103515245+12345)&0x7fffffff
returnsd%n

defmain():
seed(11)
foriinxrange(4):
printrandn(313)

if__name__=='__main__':
main()

混淆后

oo000=1
if9-9:Ii.o0o00Oo0O-iI11I1II1I1I
defoooo(s):
globaloo000
oo000=s
if11-11:ii1I-ooO0OO000o
defii11i(n):
globaloo000
oo000=(oo000*1103515245+12345)&0x7fffffff
returnoo000%n
if66-66:iIiI*iIiiiI1IiI1I1*o0OoOoOO00
defI11i():
oooo(11)
forO0Oinxrange(4):
printii11i(313)
if78-78:i11ii11iIi11i.oOoO0oo0OOOo+IiiI/Iii1ii1II11i
if__name__=='__main__':
I11i()#

⑹ 有什么工具可以将python编译好的代码.pyc反编译为.py

depython是用来反编译经过python编译的后缀名为pyc或pyo的字节码文件的.
如果你找不到你写的python源代码,depython可以帮助你通过pyc/pyo文件来找回这些源代码。
经depython反编译得出的python源代码,和你原来的代码文件几乎完全一样。
http://www.depython.net/?lang=zh

⑺ 如何编译生成PYC文件

Python语言编程中如何编译生成PYC文件?(版本Python V 3.4.1)
(1) compile() 函数
compile() 函数有两个, 一个是内建函数,另一个是模块py_compile中的.前者生成一个Compile对象,它只能在代码中被调用(exec(comp)),不能生成pyc文件。后者必须生成pyc文
件,但不能在交互界面运行它(run 和 exec都不行)。

(2) 生成生成pyc文件
compile(file, cfile=None, dfile=None, doraise=False, optimize=-1)
例子:
compile("test.py")
compile("test.py", "test.pyc")
第一种方法输出文件在子目录__pycache__中,而且文件名是test.python-34.pyc,有两个点,不好!所以一定要用第二种格式输出文件在当前当前目录。其它选项都缺省就行, -1 表示优化,所以pyo文件也不用去做了。

(3) pyc文件的运行
不能在python的交互界面中运行(run 和 exec都不行)。只能够在DOS屏幕上运行, 格式为:
python test.pyc [argv]
在程序中调用可以用:
os.system ("python test.pyc ")

(4)内建函数compile()的语法
compile(source, filename, mode[, flags[, dont_inherit]]) -> code
object。
生成一个code对象。
例子:
yuju = "print('hello')"
hc = compile(yuju, "yuju.err", "single")
exec(hc)
输出:hello
type(hc) --> code
使用时至少要提供3个参数,source是源代码,它可以是语句、表达式或代码文件。filename要求一个文件名储存出错信息,mode是编译模式,只能使用如下3种:exec, eval, single。

linux下 python 编译pyc 运行错误

pyc 不是可执行文件
可以试试 pyinstaller 这个打包工具,用 pip 安装,安装之后就可以直接运行下面的命令
pyinstaller -w --onefile xx.py

⑼ 如何编译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常用正则表达式 发布:2025-02-09 04:42:53 浏览:177
机器人编程培训哪家好 发布:2025-02-09 04:37:44 浏览:307
上海怎么学习java 发布:2025-02-09 04:26:39 浏览:22
erp系统搭建备用服务器 发布:2025-02-09 04:07:38 浏览:945
戴尔服务器在bios怎么配置管理ip 发布:2025-02-09 04:01:53 浏览:550
小鱼易连云存储 发布:2025-02-09 03:59:47 浏览:89
正在限制访问 发布:2025-02-09 03:47:17 浏览:903
架设数据库 发布:2025-02-09 03:41:29 浏览:966
imacpro哪个配置最好 发布:2025-02-09 03:32:29 浏览:253
用编程对话 发布:2025-02-09 03:23:43 浏览:88