Python代码的编译



Python代码在解释执行之前,是会被编译成.pyc或者.pyo文件的,它们是中间字节码表示的文件,之后Python虚拟机才会去解释执行它们。

1、pyc文件

=========

pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高。

而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。

pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的。

2、pyo文件

==========

pyo是优化编译后的程序 python -O 源文件即可将源程序编译为pyo文件。

3、把单个文件编译成pyc

====================

用如下代码

import py_compile

py_compile.compile(r‘H:\game\test.py‘)

或者

python -m py_compile test.py

这样会在test.py文件所在的目录下,生成一个__pycache__(注意:这里目录名前后有两个下划线)的目录,并且其中存有一个test.cpython-35.pyc文件,这个pyc文件就是test.py编译之后生成的文件。

4、把一个目录下所有python源文件编译pyc

===================================

一般来说,我们的工程都是在一个目录下的,一般不会说仅仅编译一个py文件而已,而是需要把整个文件夹下的py文件都编译为pyc文件,python又为了我们提供了另一个模块:compileall 。使用方法如下:

import compileall

compileall.compile_dir(r‘/root/src‘)

也可以直接用命令行编译一个目录下的文件

python -m compileall /root/src/

这样就会在/root/src目录下生成一个新的目录__pycache__,这个目录的下面会存放所有的和python源代码对应的pyc文件

比如源代码目录结构如下

/root/src

|---test.py

|---test2.py

|---test3.py

编译后目录结构会变成如下:

/root/src

|---test.py

|---test2.py

|---test3.py

|---__pycache__

|----test.cpython-35-pyc

|----test2.cpython-35-pyc

|----test3.cpython-35-pyc

以上就是Python编译的基本知识。

时间: 2024-11-08 20:05:21

Python代码的编译的相关文章

Python代码是编译执行还是解释执行?

转载地址:http://blog.csdn.net/zv3e189os5c0tsknrbcl/article/details/78661641 有人在讨论 Python 代码是编译执行还是解释执行?这个问题还可以换一种说法: Python 是编译型语言还是解释型语言?回答这个问题前,我们先弄清楚什么是编译型语言,什么是解释型语言. 所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下次运行时无需重新编译.不过它是针对特定CPU体系的,这些目标代码只能在特定

关于python代码是编译执行还是解释执行

Python 是编译型语言还是解释型语言?回答这个问题前,应该先弄清楚什么是编译型语言,什么是解释型语言. 所谓编译执行就是源代码经过编译器编译处理,生成目标机器码,就是机器能直接运行的二进制代码,下次运行时无需重新编译. 不过它是针对特定CPU体系的,这些目标代码只能在特定平台执行,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新编译. 它不具备可移植性,但是执行速度快,C.C++这类语言属于编译型语言. 而解释型语言是在代码运行期间逐行翻译成目标机器码,下次执行时,还是需要逐

让c像python一样可以在命令行写代码并且编译

在你亲爱的.bashrc/.zshrc中添加 ###C###go_libs="-lm"go_flags="-g -Wall -include allheads.h -O3"alias go_c="c99 -xc '-' $go_libs $go_flags" 然后再/usr/include目录下新建一个allheads.h文件 在里面添加你想要添加的头文件,比如 #include <stdio.h>#include <math.

在 Xcode 里编译运行 Python 代码

Xcode有着良好的自动补全功能和自动缩进功能,而且Xcode本身也是iOS开发唯一的选择.我们是否可以在这样一个集成环境里,搭建python运行环境呢?答案是可以的,而且很简单,运行的时候也很方便.下面来简单讲解如何在Xcode 5下,搭建python编译环境来编写和运行python程序. 指引 / 跳至 1找到 Python 2Xcode 编译 Python 程序 3Edit Scheme 4Build and Run 找到 Python 每个OS X系统都内置了python,我们可以在[实

使用cython库对python代码进行动态编译达到加速效果

1.测试代码:新建  fib.pyx # coding:utf-8 import matplotlib.pyplot as plt import numpy as np from sklearn.cluster import KMeans def km(): return KMeans(n_clusters=4) def fib(n): if n<2: return 1 else: return fib(n-1)+fib(n-2) def plots(): x = np.linspace(-2,

如何从python代码中直接访问Android的Service

在Kivy中,通过pyjnius扩展可以间接调用Java代码,而pyjnius利用的是Java的反射机制.但是在Python对象和Java对象中转来转去总让人感觉到十分别扭.好在android提供了binder这个进程间通信的功能,Java中的Service也是基于Binder的C++代码封装来实现进程间通信的,这也为从Python代码中绕开pyjnius直接访问Java代码提供了可能,既然Java的Service是基于C++的封装来实现的,也同样可以在Python中封装同样的C++代码,这篇文

将SCONS工具集成到Python代码中

SCONS是Python的自动智能结构化编译工具,将来或许能代替Make. 在Windows或者Linux下,SConstruct文件相当于MakeFile,使用SCONS编译,需输入scons.bat(scons),后面带上编译选项options(如SConstruct所在的路径).观察scons.bat这个脚本,可以在其他Python代码中,将SCONS工具当作一个函数来调用.这个函数就是Scons.Script.main(),这个main函数将解析命令行中的编译选项,通过sys.argv[

Python代码分析工具之dis模块

转自:http://hi.baidu.com/tinyweb/item/923d012e8146d00872863ec0  ,格式调整过. 代码分析不是一个新的话题,代码分析重要性的判断比较主观,不同的人有不同的认识.Python是用C来实现的,所以对于Python的性能或代码质量的评估可以通过dis模块获取到对应的字节码指令来进行评估. Python代码是先被编译为Python字节码后,再由Python虚拟机来执行Python字节码(pyc文件主要就是用于存储字节码指令 的).一般来说一个Py

在Linux下调试Python代码的各种方法

这是一个我用于调试或分析工具概述,不一定是完整全面,如果你知道更好的工具,请在评论处标记. 日志 是的,的确,不得不强调足够的日志记录对应用程序是多么的重要.您应该记录重要的东西,如果你的记录足够好的话,你可以从日志中找出问题从而节省大量的时间. 如果你曾经用print语句来调试代码现在停下吧,用logging.debug替代,开始可以慢慢来,以后完全禁用它... 追踪有时看到程序如何被执行会很有帮助.你可以使用IDE的调试共轭ngn一步一步的运行程序,但你需要知道你要找的是什么,否则这将会是一