如何编译一个python文件?

Bha*_*man 66 python compiling

我已经开始学习 python,我也是 Ubuntu 的新用户。我需要知道编译.py文件的方法。我已经尝试过使用命令

python "hello.py"
Run Code Online (Sandbox Code Playgroud)

编译python的其他方法是什么?

Yam*_*aho 65

添加到 Bryan 的答案中,如果您只是想从终端编译一个文件或一堆文件,则py_compile可以通过以下方式将该模块作为脚本执行:

python -m py_compile fileA.py fileB.py fileC.py ...

  • 如果你因为想要速度而编译,你也可以添加 `-O` 标志,比如 `python -O -m py_compile ...`,它会“开启基本优化”。主要是去掉了 `assert` 语句和 `if __debug__` 代码,所以对大部分代码没有作用。参见 [`man python`](http://linux.die.net/man/1/python) 和 [“Python 优化做什么……做什么?”](http://stackoverflow.com/q/4777113/578288 ) 了解详情。 (10认同)

Mes*_*ion 28

另请注意,您无需编译.py文件即可运行它。Python 是一种解释型语言,您可以直接运行脚本,可以使用:

python hello.py
Run Code Online (Sandbox Code Playgroud)

或者通过添加#!/usr/bin/env python到脚本的顶部使您的脚本可执行,使文件可执行,chmod +x hello.py然后运行:

./hello.py
Run Code Online (Sandbox Code Playgroud)

Python出于性能原因在内部将您的.py脚本编译为字节码.pyc文件这一事实是一个实现细节,除非您有充分的理由这样做,否则让 Python 自己决定何时以及是否编译。

  • @yellow01 你是对的,一旦通过 MestreLion 描述的过程开始,解释器将需要阅读权限。但是,`chmod +x` 授予执行权限,并且不会触及现有权限,因此除了现在可执行之外,它大概是可读的。 (2认同)

小智 15

您也可以尝试compileall

python -m compileall ./
Run Code Online (Sandbox Code Playgroud)


Bry*_*yan 13

查看此链接在 Python 中编译

页面中间讲了可以导入的py_compile模块。语法如下:

import py_compile

py_compile.compile("file.py")
Run Code Online (Sandbox Code Playgroud)

这种编译方法不会像运行 python file.py 那样执行模块。

还有一种方法可以编译整个目录树,但我会让您查看链接以了解它是如何执行的。

希望这可以帮助。


小智 6

您可以使用各种方法将 Python 脚本编译为二进制代码,但我发现使用 Nuitka 效率更高。

Nuitka 是一个 Python-to-C++ 编译器,几乎支持所有版本的 Python。

命令语法很简单

nuitka hello.py
Run Code Online (Sandbox Code Playgroud)

转到http://nuitka.net/doc/user-manual.html了解更多信息。

  • 怎样更有效率?为什么会有人想要使用它? (6认同)