运行 Python 脚本(最常用)
这是最基本、最常用的“编译”和执行方式,当你运行一个 .py 文件时,Python 解释器会自动将其编译成字节码,然后由虚拟机执行。

命令格式
python your_script_name.py
详细说明
python: 这是调用 Python 解释器的命令。- 在 Linux 或 macOS 上,通常就是
python。 - 在 Windows 上,可能是
py或python,如果系统安装了多个 Python 版本(如 Python 2.7 和 Python 3.8),你可能需要使用python3或py -3来明确指定使用 Python 3。
- 在 Linux 或 macOS 上,通常就是
your_script_name.py: 这是你想要运行的 Python 源文件的名称。
示例
假设你有一个名为 hello.py 的文件,内容如下:
# hello.py
print("Hello, World!")
name = input("Please enter your name: ")
print(f"Hello, {name}!")
在终端或命令行中,你只需要执行:
python hello.py
执行过程:
- Python 解释器读取
hello.py文件。 - 它将源代码编译成中间的字节码(字节码会被存储在
__pycache__目录下的hello.cpython-38.pyc文件中,这里的38代表 Python 3.8 版本)。 - Python 虚拟机执行这些字节码,并在终端输出结果。
仅编译 Python 文件(不执行)
如果你只想生成 .pyc 字节码文件,而不想立即执行脚本,可以使用 -m 参数配合 py_compile 模块。

命令格式
python -m py_compile your_script_name.py
详细说明
-m py_compile: 告诉 Python 将py_compile模块作为脚本运行,这个模块专门用于将单个.py文件编译成.pyc文件。- 优点:速度比完整运行脚本快,因为它跳过了执行步骤。
- 缺点:它不会检查模块的依赖关系,也不会执行模块中的顶层代码(
if __name__ == "__main__":里的代码)。
示例
编译 hello.py:
python -m py_compile hello.py
执行后,hello.py 中没有语法错误,你会在同一目录(或 __pycache__ 子目录)下找到一个 hello.pyc 文件。
将多个文件编译成一个可执行文件(打包)
如果你想把你的 Python 程序(包括所有依赖库)打包成一个独立的可执行文件(.exe 文件,这样用户就不需要安装 Python 也能运行),你需要使用第三方工具。
最常用的工具是 PyInstaller。

步骤 1: 安装 PyInstaller
pip install pyinstaller
步骤 2: 使用 PyInstaller 编译
PyInstaller 提供了多种打包选项。
基本打包(生成一个文件夹)
pyinstaller your_script_name.py
执行后,PyInstaller 会在当前目录下创建三个文件夹:build(临时文件)、dist(最终结果)和 your_script_name.spec(配置文件),你的可执行文件在 dist 文件夹里。
打包成单个文件(更常用)
pyinstaller -F your_script_name.py
这会生成一个独立的可执行文件,通常命名为 your_script_name(在 Linux/macOS 上)或 your_script_name.exe(在 Windows 上),但启动速度可能会稍慢,因为程序需要从单个文件中解压出所有依赖。
打包时不显示控制台窗口(适用于 GUI 程序)
pyinstaller -F -w your_script_name.py
-w或--windowed参数会隐藏黑色的命令行窗口,这对于图形界面程序非常有用,但对于控制台程序,你会看不到任何输出。
示例
将 hello.py 打包成一个独立的 hello.exe 文件(Windows 示例):
pyinstaller -F hello.py
打包完成后,你可以在 dist 目录下找到 hello.exe,直接双击即可运行。
使用 py_compile 模块(在代码中)
除了命令行,你还可以在 Python 代码中直接调用 py_compile 模块来实现编译。
import py_compile
# 编译单个文件
py_compile.compile('hello.py', 'hello_compiled.pyc')
# 编译单个文件,不指定输出文件名,则会在 __pycache__ 目录下生成
py_compile.compile('hello.py')
# 编译多个文件
py_compile.compile('module1.py', 'module2.py')
这种方式通常用于构建脚本或开发工具中,而不是日常使用。
总结与对比
| 命令/方法 | 主要用途 | 是否立即执行 | 输出结果 | 适用场景 |
|---|---|---|---|---|
python script.py |
运行脚本 | 是 | 程序的输出结果 | 日常开发和运行,最常用。 |
python -m py_compile script.py |
仅编译 | 否 | 生成 .pyc 字节码文件 |
快速检查语法错误,或在构建流程中生成字节码。 |
pyinstaller -F script.py |
打包/发布 | 否(在打包阶段) | 一个独立的可执行文件(如 .exe) |
分发程序给最终用户,使其无需安装 Python 环境。 |
import py_compile |
代码内编译 | 否(在代码执行时) | 生成 .pyc 字节码文件 |
在自动化脚本或工具中进行编译操作。 |
对于绝大多数 Python python your_script.py 是你每天都会用到的核心命令,当你需要发布程序时,pyinstaller 才是你需要了解的“编译”工具。
