Python 程序启动时发生了哪些初始化操作-Python教程

Python解释器启动时先执行C层初始化(如Py_Initialize),再构建sys.path并加载内置模块,接着创建__main__模块执行用户代码,源码解码则按需在import或执行时进行。

Python 解释器启动时的 C 层初始化

Python 程序真正开始执行前,Py_Initialize()(或更现代的 Py_InitializeEx()、Py_RunMain())会完成底层 C 运行时准备:注册信号处理、初始化内存分配器(如 pymalloc)、设置线程状态(_PyThreadState_Prealloc)、加载内置模块(builtins、sys、gc)到解释器全局字典。这一步不依赖用户代码,失败直接导致 Segmentation fault 或 Abort trap —— 常见于嵌入 Python 的 C 程序未调用 Py_Initialize() 就访问 PyList_New() 等 API。

sys.path 构建与内置模块加载顺序

sys.path 在解释器启动早期就已生成,顺序直接影响模块可发现性:

  • 脚本所在目录(若以文件方式运行)或空字符串(python -c 时)
  • PYTHONPATH 环境变量指定路径
  • 标准库路径(由编译时 prefix 和 exec_prefix 决定)
  • site-packages(仅当启用 site 模块时才追加)

注意:site 模块默认启用,但可通过 python -S 禁用——此时不会自动添加 site-packages,也不会执行 .pth 文件,pip install --user 安装的包将不可见。

__main__ 模块创建与用户代码执行入口

当执行 python script.py 时,解释器会动态创建一个名为 __main__ 的模块对象,并将 script.py 的 AST 编译后在该模块的命名空间中执行;而 python -m module_name 则通过 runpy.run_module() 加载对应模块并设为 __main__。关键点:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » Python 程序启动时发生了哪些初始化操作-Python教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4011664+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4011664+
  • 本周更新: 0+
  • 最后更新: 2026-03-16