python编译py成pyc和pyo
pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或 者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。
1.编译单个py文件
(1)
直接在命令行下执行 python -m py_compile file.py
(2)
在python代码中使用py_compile.compile函数来编译。该函数的帮助信息如下:
Help on function compile in module py_compile: compile(file, cfile=None, dfile=None, doraise=False) Byte-compile one Python source file to Python bytecode. Arguments: file: source filename cfile: target filename; defaults to source with 'c' or 'o' appended ('c' normally, 'o' in optimizing mode, giving .pyc or .pyo) dfile: purported filename; defaults to source (this is the filename that will show up in error messages) doraise: flag indicating whether or not an exception should be raised when a compile error is found. If an exception occurs and this flag is set to False, a string indicating the nature of the exception will be printed, and the function will return to the caller. If an exception occurs and this flag is set to True, a PyCompileError exception will be raised. Note that it isn't necessary to byte-compile Python modules for execution efficiency -- Python itself byte-compiles a module when it is loaded, and if it can, writes out the bytecode to the corresponding .pyc (or .pyo) file. However, if a Python installation is shared between users, it is a good idea to byte-compile all modules upon installation, since other users may not be able to write in the source directories, and thus they won't be able to write the .pyc/.pyo file, and then they would be byte-compiling every module each time it is loaded. This can slow down program start-up considerably. See compileall.py for a script/module that uses this module to byte-compile all installed files (or all files in selected directories).
[baichuan@zjdw-odmz-0009 python]$ ls adp_group_info_data adp_group_info.py db_api.py db_api.pyc dump_rmc_area_ip.py dump_rmc_tag.py [baichuan@zjdw-odmz-0009 python]$ python Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import py_compile >>> py_compile.compile("adp_group_info.py") >>> py_compile.compile("/home/baichuan/yxc/python/dump_rmc_tag.py") >>> quit() [baichuan@zjdw-odmz-0009 python]$ ls adp_group_info_data adp_group_info.py adp_group_info.pyc db_api.py db_api.pyc dump_rmc_area_ip.py dump_rmc_tag.py dump_rmc_tag.pyc [baichuan@zjdw-odmz-0009 python]$
2.批量生成pyc文件
在python代码中使用compileall.compile_dir函数来编译。该函数的帮助信息如下:
Help on function compile_dir in module compileall: compile_dir(dir, maxlevels=10, ddir=None, force=0, rx=None, quiet=0) Byte-compile all modules in the given directory tree. Arguments (only dir is required): dir: the directory to byte-compile maxlevels: maximum recursion level (default 10) ddir: if given, purported directory name (this is the directory name that will show up in error messages) force: if 1, force compilation, even if timestamps are up-to-date quiet: if 1, be quiet during compilation
[baichuan@zjdw-odmz-0009 python]$ ls adp_group_info_data adp_group_info.py db_api.py dump_rmc_area_ip.py dump_rmc_tag.py [baichuan@zjdw-odmz-0009 python]$ python Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import compileall >>> compileall.compile_dir("/home/baichuan/yxc/python/") Listing /home/baichuan/yxc/python/ ... Compiling /home/baichuan/yxc/python/adp_group_info.py ... Compiling /home/baichuan/yxc/python/db_api.py ... Compiling /home/baichuan/yxc/python/dump_rmc_area_ip.py ... Compiling /home/baichuan/yxc/python/dump_rmc_tag.py ... 1 >>> quit() [baichuan@zjdw-odmz-0009 python]$ ls adp_group_info_data adp_group_info.py adp_group_info.pyc db_api.py db_api.pyc dump_rmc_area_ip.py dump_rmc_area_ip.pyc dump_rmc_tag.py dump_rmc_tag.pyc [baichuan@zjdw-odmz-0009 python]$
相关推荐
为了防止代码泄露就考虑不采用直接给源码方式,而python二进制脚本pyc和pyo,虽然提供的不是源码,但可以通过uncompyle2直接得到源码,所以现在用类似py2exe软件将py文件打包成exe,用此脚本可以将exe反编译为py脚本
在 Python 中,编译后的文件可以是 pyc 或 pyo 文件,pyc 文件是 Python 的 bytecode 文件,pyo 文件是优化后的 bytecode 文件。 Python 文件编译有多种方法,可以使用 Python 自带的 py_compile 模块或 compileall...
Python是一种广泛使用的高级编程语言,它的源代码通常会被编译成字节码(.pyc或.pyo文件),以便在解释器中更快地执行。这个名为"pyc反编译.rar"的压缩包提供了一个针对Windows操作系统的工具,用于将这些字节码文件...
编译py为so文件,更好的隐藏源码,可以直接编译整个python工程 删除.pyc .pyo文件 删除.py源文件 删除.c编译文件 也可以使用Makefile的形式: 1.将Makefile和工程目录放在同一目录下; 2.正确是安装Cpython解释器; ...
在处理Python编译后的`.pyc`或`.pyo`文件时,有时我们需要查看源代码,这就涉及到了反编译的概念。本文将深入探讨Python的反编译过程,以及如何使用批量反编译工具来高效地进行这个操作。 首先,让我们了解一下`....
python并非完全是解释性语言,它是有编译的,先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行,相对于py文件来说,编译成pyc和pyo本质上和py没有太大区别,只是对于这个模块的加载速度提高了,并没有...
uncompyle6是一个用于反编译Python字节码的库,它能够将Python的.pyc或.pyo文件转换回源代码.py文件。这个库对于那些需要查看或理解编译后的Python代码,或者进行代码调试和分析的开发者来说,非常有用。特别是针对...
4、Python编译 python -O -m py_compile alp.py 执行结果:生成alp.pyo python -O -m py_compile alp.py 注:如果不带选项-O则生成的是pyc文件,-O选项则可以在生成代码时进行一定的优化。
decompyle是一个流行的Python反编译器,它的主要任务是将Python的.pyc或.pyo(已编译的字节码文件)转换回接近原始的.py源代码格式。这个工具对于代码分析、逆向工程或者在丢失源代码的情况下恢复代码非常有用。...
使用“xdis-4.7.0-py3.4.egg”时,开发者需要确保他们的环境是Python 3.4,因为这个版本的xdis是针对这个特定版本的Python编译的。如果要在其他Python版本下使用xdis,可能需要找到对应版本的库,或者使用xdis提供的...
【数信杯-初赛题-pyc附件】是针对一场数据科学或信息技术竞赛的初赛题目,其中包含的“pyc”文件很可能是Python编译后的字节码文件。在Python编程环境中,`.pyc`文件是源代码`.py`文件的预编译版本,用于提高程序的...
1. **字节码解析**:xdis库的核心功能是解析Python字节码,它能将Python的.pyc或.pyo文件中的字节码解码成人类可读的形式。这对于理解Python代码的执行流程,特别是那些复杂的控制流结构和优化技巧,非常有用。 2. ...
在Windows 10环境下,开发基于Python的深度学习应用时,有时为了提高性能或满足生产部署的需求,需要将Python代码编译成可执行的二进制文件。在本场景中,我们将探讨如何使用PyCharm和Anaconda环境来编译Python代码...
4、一个library.zip文件,它包含了已编译的纯的python模块如.pyc或.pyo 上面的mysetup.py创建了一个控制台的helloword.exe程序,如果你要创建一个图形用户界的程序,那么你只需要将mysetup.py中的console=["hello...
它提供了强大的API,可以用于读取和分析Python字节码,包括Python的.pyc文件和未压缩的.pyo文件。例如,`xdis.dis`函数可以将字节码解码为人类可读的形式,这对于理解代码执行流程非常有帮助。此外,`xdis.load_...
4. **Python编译后的文件扩展名**: - `.pyc`是Python源代码编译后的字节码文件,这种文件可以在不解析源代码的情况下快速执行,提高了程序的运行效率。当Python程序运行时,如果没有找到对应的`.pyc`文件,解释器...
python程序的扩展名有.py、.pyc、.pyo和.pyd。.py是源文件,.pyc是源文件编译后的文件,.pyo是源文件优化编译后的文件,.pyd是其他语言写的python库。 扩展名 在写Python程序时我们常见的扩展名是py, pyc,其实还有...
`.pyc`和`.pyo`文件虽然不是人为创建的,但它们在程序运行过程中扮演着重要角色,提高了程序的运行效率。至于`.pyd`文件,则主要用于包含非Python编写的库,以便于Python程序与这些库交互。 了解这些基础知识对于...