编译Python

49
我该如何编译和运行 Python 文件(*.py扩展名)?

21
为什么会有负评?对于不熟悉Python的人来说,这似乎是一个完全合理的问题。 - Glen
9
尤其是对于那些来自C、C++、Java等语言的人来说。 - geowa4
4
在向这里提问之前,请查看Python教程。http://docs.python.org/tutorial/ - S.Lott
@Glen:现在!在编辑之前看一下问题;-) - Dario
3
@Glen:所以现在它值得得到7个赞吗? - SilentGhost
8个回答

29

python yourfile.py

首先需要安装Python,它会自动将您的文件编译成 .pyc 二进制文件,然后运行它。每次更改文件时,它都会自动重新编译。

http://www.python.org/download/


1
是的。它们是字节码和二进制代码,但它们不是传统意义上的“可直接运行于系统”的“二进制文件”。 - Paul McMillan

16

Python在执行文件之前会将其编译成字节码。这意味着目标计算机必须安装Python解释器。

如果您不想在目标计算机上安装Python,可以使用py2exepy2app或类似工具。


8
有时候,获得一个明确的答案比费力地查找一份冗长的教程更好。目前已有三个人发现这个问题很有用,这应该能告诉你些什么。 - system PAUSE

14

如果你只想编译源代码而不运行它们,你可以执行以下操作

compileall.py <directory>

这个命令会递归地编译该目录下的 Python 代码。

compileall 脚本通常位于类似以下目录的位置:

/usr/local/lib/python2.6
<prefix>/lib/python2.6(或类似的,取决于设置Python配置文件的前缀)。
正如Lulu建议的那样,您应该确保生成的.pyc和.pyo文件对您关心的用户可执行。 compileall也可以用作模块。
import compileall
compileall.compile_dir(path)

8
Python是一种解释型语言,所以不需要编译就可以运行。标准版本的python会将代码编译成“字节码”,就像Java等语言一样,并将其保存在.pyc文件中,在下次运行时运行该文件,如果文件没有更新,可以节省时间。如果您已经更新了文件,则会自动重新编译。
您还可以使用-O标志运行python,这将生成.pyo文件而不是.pyc文件。我不确定这是否有很大的区别。如果速度很重要,请使用psyco。
是的,在Unix(包括Linux、BSD和Mac OS X或在Windows上的Unix shell)中,您可以在文件顶部使用shebang line使文件自动使用python运行。在Windows上,相当于将.py文件与python.exe关联,并确保您的PATHEXT环境变量包括“.PY”扩展名。
但是,对于Windows,您更可能想要使用Python编写GUI程序(可能使用PyQT4和ERIC4),其主要脚本为.pyw文件,并将.pyw与pythonw相关联(它随Python一起在Windows上提供)。这将使您能够在Windows上像其他GUI程序一样运行Python脚本。对于发布和分发,您可能需要使用类似于py2exe的工具将其编译为可执行文件,如其他人所述。

2
语言本身并不是解释的,而是实现的。 - Will03uk

6

补充Paul McMillan的回答,如果你使用的是Windows系统并已安装Python,则以“.py”结尾的文件应该与python可执行文件相关联,这样你就可以像这样运行它:

> myfile.py

在*nix系统中,您可以以#!/usr/bin/python开头的方式来编写文件,并使用以下方式运行它:
$ ./myfile.py

在*nix系统中,如果一个文件的前两个字符是#!,那么它将使用指定的可执行文件来执行该文件,在这里我设置为/usr/bin/python


1
在Windows中,我也喜欢将.py添加到PATHEXT环境变量中,使.py文件像.exe一样可执行(即无需输入扩展名)。但仍需要安装Python。 - Jason R. Coombs
啊!你必须执行 chmod u+x *.pyc 命令,以授予用户可执行权限 并且 文件必须是 .pyc 文件。然后,你可以执行 ./program.pyc 命令。 - dylnmc
我了解到你可以对py和pyc扩展名都这样做。解释器(在几乎所有情况下)依赖于Python解释器来完成此操作。 - dylnmc

4

如果你想将一个python源文件转换成可以在Windows上双击运行的.exe文件,你可以使用py2exe工具来帮助你构建易于分发的软件包。


1
在大多数类Unix系统上,您可以使用shebang告诉操作系统应该调用哪个解释器。您只需放置以下内容即可:
#!/path/to/python 

在您的文件的第一行,当然您需要将“/path/to/”替换为您系统上的路径。在大多数情况下,这将是“/usr/bin/python”或“/usr/local/bin/python”。在Unix系统上,您还可以使用以下命令查找路径:

"#!usr/bin/env python" 

或者调用命令

which python

找到路径。 然后,您可以使用命令运行程序

./yourprogram.py

如果它告诉你没有权限这么做,你必须使用命令。
chmod a+x yourprogram.py

-1

Windows的答案

  1. 首先你必须安装Python
  2. 然后设置路径变量
  3. 之后编写你的Python程序并保存
  4. 假设有一个名为“hello.py”的Python程序
  5. 打开cmd.exe
  6. 然后进入保存了“hello.py”文件的路径,
  7. 然后输入python hello.py,并按下回车键。

现在Python代码会自动编译并显示结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接