Python 如何初始化 sys.path 列表?

Patricia Arquette
发布: 2024-10-31 19:05:30
原创
260 人浏览过

How does Python initialize the sys.path list?

Python 的 sys.path 是从哪里初始化的?

Python 的 sys.path,包含 Python 搜索要导入的模块的目录,经过复杂的初始化过程来确定其初始值。以下是其设置方式的详细说明:

sys.executable 确定

  • Python 在文件系统上找到其物理位置并将其用作 sys 的值.executable.

sys.exec_prefix 和 sys.prefix 初始化

  • Python 读取与 sys.executable 同一目录下的 pyvenv.cfg 文件或上一个目录。
  • 如果文件存在,它会提取以下信息:

    • 在 Windows 上:如果“applocal = true,”sys.prefix 设置为包含 sys.executable 的目录。否则,它使用“home = ”指令。
    • 在 Linux/Mac 上:Sys.exec_prefix 设置为“home = ”指示。除非 PYTHONHOME 环境变量存在,否则 Sys.prefix 也设置为该值。
  • 如果 pyvenv.cfg 不存在或不包含必要的信息,Python 会尝试确定 sys.exec_prefix和 sys.prefix 通过从 sys.executable 向后走,寻找特定的标志性文件。

sys.path 初始化

  1. Python 将正在执行的脚本的目录添加到 sys.path。
  2. 在 Linux/Mac 上,它添加 PYTHONPATH 环境变量(如果已设置)。
  3. 它包括zip 文件路径(/lib/python35.zip 或 path/to/python.zip)。
  4. 在 Windows 上,如果 pyvenv.cfg 中没有“applocal = true”,它会添加来自“HK_CURRENT_USERSoftwarePythonPythonCore<”的子项;DLLVersion>PythonPath。”
  5. 在 Windows 上且 pyvenv.cfg 中没有“applocal = true”,并且如果未找到 sys.prefix,则会添加“HK_CURRENT_USERSoftwarePythonPythonCorePythonPath”的“核心内容”。 “
  6. 在 Windows 上并且 pyvenv.cfg 中没有“applocal = true”,它会添加来自“HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath”的子项。
  7. 在 Windows 上并且在 pyvenv.cfg 中没有“applocal = true” .cfg,如果未找到 sys.prefix,则会添加“HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath”的“核心内容”。
  8. 在 Windows 上且未设置 PYTHONPATH、未找到前缀且没有注册表项目前,它添加了 PYTHONPATH 的相对编译时值。
  9. 它在 PYTHONPATH 编译时宏中合并了相对于动态找到的 sys.prefix 的路径。
  10. 在 Linux/Mac 上,它添加了 sys.exec_prefix。在 Windows 上,它添加用于搜索 sys.prefix 的目录。
  11. 在 Windows 上,如果 pyvenv.cfg 中没有“applocal = true”,它会尝试通过在 sys.path 中定位标志性文件来查找 sys.prefix 。如果不成功,会将 sys.prefix 留空。

站点模块的其他修改

  • 站点模块通过添加进一步修改 sys.path基于 sys.prefix、sys.exec_prefix 和特定于平台的路径的目录。
  • 它检查这些新路径中的配置文件,可能会添加更多路径。

以上是Python 如何初始化 sys.path 列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!