python3.2的pycompile

时间:2012-10-22 01:43:48

标签: python python-3.x bytecode pyc

我正在运行mint 13并使用apt-get包管理系统安装了python 3.2。我还安装了python 2.7以及3.2 pycompile似乎是包装python 2.7代码并抛出python 3.2代码的异常。

我环顾四周试图安装一些软件包,但是无法找到python 3.2的pycompile。如何为python 3.2获得pycompile工作?

2 个答案:

答案 0 :(得分:5)

py_compile是一个stdlib模块,可以生成给定Python源代码的字节码。 很少需要。

要编译Python 3源代码,必须使用随附的py_compile版本,如果从命令行使用它,则必须使用Python 2.7中的版本:

$ python3 -mpy_compile your_script.py

要更改存储pyc文件的默认位置,您可以使用py_compile.compile() functioncfile参数。

  

字节代码是否使脚本运行得更快?

它可能(以微不足道的数量)。 Python编译器做得不多,所以速度很快。

以下是字节代码在人类可读形式中的样子:

>>> def f(o):
...     with o:
...         pass
...
>>> import dis   
>>> dis.dis(f)
  2           0 LOAD_FAST                0 (o)
              3 SETUP_WITH               5 (to 11)
              6 POP_TOP             

  3           7 POP_BLOCK           
              8 LOAD_CONST               0 (None)
        >>   11 WITH_CLEANUP        
             12 END_FINALLY         
             13 LOAD_CONST               0 (None)
             16 RETURN_VALUE

所有繁重的工作都留给python解释器,它在运行时解释字节码。

  

或者这仅用于分发?

文档提供了一个用例:一个带有Python模块的共享目录,只有窗帘用户才能编写。您可以禁用缓存字节代码到磁盘,以便可以使用存储在只读位置的py文件,而无需相应的pyc文件。

  

为什么很少使用?

通常,pyc文件是由构建/安装过程创建的。如果没有pyc文件,则可以在导入模块时即时创建它们:

$ python -c 'import some_module'

答案 1 :(得分:0)

这是我发现的:http://effbot.org/librarybook/py-compile.htm

我能够按照上面的链接启动python 3.2 shell。结果是奇数目录中的.pyc文件。 pyc大于.py文本文件(如果发生这种情况?)这不像pycompile那样令人满意 - 直到我找到一些我可能不得不忍受的事情: - (