使用py_compile进行编译

时间:2014-09-19 21:38:42

标签: python compilation

这更像是一个玩具问题'而不是真实的,但你可以使用py_compile模块从命令行编译一行Python代码吗?

我的第一次尝试是python -m py_compile "print 'Hello, Compile!'",但导致IOError,因为my_compile认为我正在尝试编译一个名为&#34的文件; print' Hello,Compile !'"

有什么想法吗?

注意:python -c "CODE"运行代码,它不会生成带字节码的* .pyc文件。

2 个答案:

答案 0 :(得分:1)

不是真的。 py_compilecompileall旨在用于文件。你当然可以使用一些临时文件,但这是不必要的。

相反:您是否只是尝试使用dis?您可以通过指定-

以交互方式(或从管道)读取标准输入
ben@nixbox:~$ echo "print 'hello'" | python -m dis -
  1           0 LOAD_CONST               0 ('hello')
              3 PRINT_ITEM          
              4 PRINT_NEWLINE       
              5 LOAD_CONST               1 (None)
              8 RETURN_VALUE        

答案 1 :(得分:0)

您不需要py_compile模块来编译 - CPython解释器总是在执行之前编译为字节码。

这里真正的问题是,在您编译之后,您希望它与字节码有什么关系?

以下是您可能想到的一件事:

$ python -c '
def f():
  print "Hello, World"
import dis
dis.dis(f)'
  2           0 LOAD_CONST               1 ('Hello, World')
              3 PRINT_ITEM          
              4 PRINT_NEWLINE       
              5 LOAD_CONST               0 (None)
              8 RETURN_VALUE        

我认为这不可能是一条真正的单线" (由于Python的语法没有嵌入命令中的新行),但你看到了这个想法。