python3.2的pycompile

2024-04-26 12:36:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行mint 13,并使用apt-get包管理系统安装了python 3.2。我还安装了Python2.7和3.2,pycompile似乎是打包Python2.7代码并抛出Python3.2代码异常的那个。

我已经四处查看并尝试安装了一些包,但是还没有找到python 3.2的pycompile。如何让python 3.2的pycompile工作?


Tags: 代码get管理系统aptmintpycompile
2条回答

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

要编译Python3源代码,必须使用附带的py_编译版本,如果从命令行使用,则不能使用Python2.7中的版本:

$ python3 -mpy_compile your_script.py

要更改pyc文件的默认存储位置,可以使用^{} functioncfile参数。

Does the byte code make the script run any faster?

它可能(数量微乎其微)。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解释器,它在运行时解释字节码。

Or is this only for distribution?

这些文档提供了一个用例:一个与Python模块共享的目录,只有帘幕用户可以编写。您可以禁用将字节码缓存到磁盘,这样就可以使用存储在只读位置的py文件,而不使用相应的pyc文件。

Why is it rarely used?

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

$ python -c 'import some_module'

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

我能够按照上述链接中的描述启动Python3.2shell。结果是奇数目录中的.pyc文件。pyc大于.py文本文件(是否会发生这种情况?)这并不像pycompile那样令人满意—除非我找到了可能不得不忍受的问题:-(

相关问题 更多 >