菜鸟科技网

Python编译命令有哪些?如何正确使用?

运行 Python 脚本(最常用)

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

Python编译命令有哪些?如何正确使用?-图1
(图片来源网络,侵删)

命令格式

python your_script_name.py

详细说明

  • python: 这是调用 Python 解释器的命令。
    • 在 Linux 或 macOS 上,通常就是 python
    • 在 Windows 上,可能是 pypython,如果系统安装了多个 Python 版本(如 Python 2.7 和 Python 3.8),你可能需要使用 python3py -3 来明确指定使用 Python 3。
  • 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

执行过程:

  1. Python 解释器读取 hello.py 文件。
  2. 它将源代码编译成中间的字节码(字节码会被存储在 __pycache__ 目录下的 hello.cpython-38.pyc 文件中,这里的 38 代表 Python 3.8 版本)。
  3. Python 虚拟机执行这些字节码,并在终端输出结果。

仅编译 Python 文件(不执行)

如果你只想生成 .pyc 字节码文件,而不想立即执行脚本,可以使用 -m 参数配合 py_compile 模块。

Python编译命令有哪些?如何正确使用?-图2
(图片来源网络,侵删)

命令格式

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

Python编译命令有哪些?如何正确使用?-图3
(图片来源网络,侵删)

步骤 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 才是你需要了解的“编译”工具。

分享:
扫描分享到社交APP
上一篇
下一篇