在 Python 项目开发中,main.py 是一个特殊的模块文件,它决定了当包或模块以入口程序运行时,Python 会执行什么代码。
理解 main.py 的作用,有助于我们构建可执行的 Python 包、组织项目结构,以及为代码提供统一的运行入口。
一、main.py 的作用
在两种情况下,Python 会执行 main.py 中的代码。
(1)以包运行
python -m package_name
比如,当你运行 python -m my_package 时,Python 会在 my_package 目录下查找并执行 main.py 文件。
(2)以 ZIP 压缩包运行
python my_archive.zip
如果一个 ZIP 文件的根目录中包含 main.py,Python 会将该 ZIP 当作可执行程序运行,并执行 main.py。
核心作用:
- 作为程序入口,集中定义项目启动逻辑。
- 避免在包外部直接引用内部文件启动程序。
- 让包既能被导入(作为库),又能直接运行(作为程序)。
二、基本示例
项目结构:
my_package/
├── __init__.py
├── __main__.py
└── core.py
main.py 内容示例:
# my_package/__main__.py
from .core import run_app
if __name__ == "__main__":
run_app()
core.py 内容示例:
def run_app():
print("应用已启动!")
运行方式:
python -m my_package
输出:
应用已启动!
三、与 if name == "main" 的区别
很多人会混淆 main.py 与 if name == "main":
简单来说:
- 单文件脚本:用 if name == "main"。
- 可运行的包:用 main.py。

