Lor*_*oh. 2 python bytecode pyc python-3.x
我运行薄荷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工作?
py_compile是一个stdlib模块,可以生成给定Python源代码的字节码.很少需要它.
要编译Python 3源代码,必须使用随附的py_compile版本,如果从命令行使用它,则必须使用Python 2.7中的版本:
$ python3 -mpy_compile your_script.py
Run Code Online (Sandbox Code Playgroud)
要更改存储pyc文件的默认位置,可以使用cfile该py_compile.compile()函数的参数.
字节代码是否使脚本运行得更快?
它可能(以微不足道的数量).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
Run Code Online (Sandbox Code Playgroud)
所有繁重的工作都留给python解释器,它在运行时解释字节码.
或者这仅用于发行?
文档提供了一个用例:一个带有Python模块的共享目录,只有窗帘用户可以编写.您可以禁用缓存字节代码到磁盘,以便可以使用存储在只读位置的py文件,而无需相应的pyc文件.
为什么很少使用?
通常,pyc文件是通过构建/安装过程创建的.如果没有pyc文件,则可以在导入模块时即时创建它们:
$ python -c 'import some_module'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9615 次 |
| 最近记录: |