是否可以编译用Python编写的程序?

时间:2009-12-24 06:36:18

标签: python compilation

我是Python编程语言的新手。我想知道是否可以编译用Python编写的程序。

是否可以将Python脚本转换为某些较低级别的编程语言,然后可以将其编译为二进制代码?

正在考虑使用Python编写代码的开发人员可能希望保持开放的可能性以便以后能够进行二进制分发。

7 个答案:

答案 0 :(得分:37)

我认为Compiling Python Code是一个很好的起点:

  

Python源代码是自动的   由。编译成Python字节码   CPython翻译。编译代码是   通常存储在PYC(或PYO)文件中,   并在源时重新生成   更新,或在必要时。

     

将程序分发给那些人   已经安装了Python,你可以   运送PY文件或PYC   文件。在最近的版本中,你可以   还创建一个包含的ZIP存档   PY或PYC文件,并使用小   “引导脚本”添​​加该ZIP   存档到路径。

     

将Python程序“编译”成一个   可执行文件,使用捆绑工具等   作为Gordon McMillan的安装人员   (替代下载)   (跨平台),托马斯海勒的   py2exe(Windows),Anthony Tuininga的   cx_Freeze(跨平台)或Bob   Ippolito的py2app(Mac)。这些工具   把你的模块和数据文件放入   某种存档文件,并创建   自动设置的可执行文件   事情,以便导入模块   来自该档案。有些工具可以   将存档嵌入可执行文件中   本身。

答案 1 :(得分:17)

如果你真的想要,你总是可以用Cython编译。这将生成C代码,然后您可以使用任何C编译器(如GCC)进行编译。

答案 2 :(得分:14)

Python作为一种动态语言,不能静态地“编译”成机器代码,就像C或COBOL一样。你总是需要一个解释器来执行代码,根据语言的定义,这是一个动态的操作。

您可以在字节码中“翻译”源代码,这只是解释器加速代码加载的中间过程,它可以转换文本文件,包含注释,空格,“if”,“二进制代码中的def','in'等,但后面的操作完全相同,在Python中,而不是在机器代码或任何其他语言中。这是它存储在.pyc文件中的内容,它也可以在架构之间移植。

可能你需要的不是“编译”代码(这是不可能的),而是“嵌入”一个解释器(在正确的架构中)与代码,以允许运行代码而无需外部安装解释器。为此,您可以使用所有这些工具,如py2exe或cx_Freeze。

也许我对此有点迂腐:-P

答案 3 :(得分:9)

你没有必要编译它。你使用它(导入)的第一个它是由CPython解释器编译的。但如果你真的想编译,有几种选择。

编译为exe

或者2只编译一个特定的* .py文件,你可以使用

import py_compile
py_compile.compile("yourpythoncode.py")

答案 4 :(得分:4)

避免冗余我再也不在此重复我的回答。

请参阅我的回答here。 (请注意,答案仅涵盖编译为 python字节码。)

答案 5 :(得分:2)

python是一种解释型语言,因此您无需编译脚本即可运行它们。让一个人运行的最简单方法是导航到终端中的文件夹并执行“python somefile.py”。这取决于您从the python site.

安装了python

您可以编译python应用程序,但这通常不是新开发人员最初需要做的事情。如果您正在寻找,请查看py2exe。这将采用您的python脚本并将其打包为可执行文件,就像基于Windows的计算机上的任何程序一样。您也可以使用python编译单个文件,如this site.中的“将Python模块编译为字节代码”部分所述

答案 6 :(得分:0)

python在运行时动态编译。

运行(linux):。python abc.py

的.py文件