​sys.path 模块搜索路径的初始化​

模块搜索路径是在 Python 启动时被初始化的。 这个模块搜索路径可通过 sys.path 来访问。

模块搜索路径的第一个条目是包含输入脚本的目录,如果存在输入脚本的话。 否则,第一个条目将是当前目录,当执行交互式 shell, -c 命令, 或 -m 模块时都属于这种情况。

PYTHONPATH 环境变量经常被用于将目录添加到搜索路径。 如果发现了该环境变量则其内容将被添加到模块搜索路径中。

备注

PYTHONPATH 将影响所有已安装的 Python 版本/环境。 在你的 shell 用户配置或全局环境变量中设置它时需要小心谨慎。 site 模块提供了下文所述的更细微的技巧。

随后加入的条目是包含标准 Python 模块以及这些模块所依赖的任何 extension module 的目录。 扩展模块在 Windows 上为 .pyd 文件而在其他平台上则为 .so 文件。 独立于平台的 Python 模块的目录称为 prefix。 扩展模块的目录称为 exec_prefix

PYTHONHOME 环境变量可以被用于设置 prefix 和 exec_prefix 的位置。 在其他情况下这些目录将使用 Python 可执行文件作为起始点来确定然后再查找几处 '地标' 文件和目录。 请注意任何符号链接也会被引入以便使用实际的 Python 可执行文件位置作为搜索起始点。 这个 Python 可执行文件位置被称为 home

一旦确定了 home,则 prefix 目录将通过首先查找 pythonmajorversionminorversion.zip (python311.zip) 来找到。 在 Windows 上将会到 home 中搜索 zip 归档而在 Unix 上则会到 lib 中搜索它。 请注意预期的 zip 归档位置即使在此归档不存在时仍然会被添加到模块搜索路径。 如果未找到归档,在 Windows 上 Python 将继续通过查找 Lib\os.py 来搜索 prefix。 在 Unix 上 Python 将查找 lib/pythonmajorversion.minorversion/os.py (lib/python3.11/os.py)。 在 Windows 上 prefix 和 exec_prefix 是相同的,但是在其他平台上则会搜索 lib/pythonmajorversion.minorversion/lib-dynload (lib/python3.11/lib-dynload) 并将其用作 exec_prefix 的锚点。 在某些平台上 lib 可能为 lib64 或其他值,请参阅 sys.platlibdir 和 PYTHONPLATLIBDIR。

一旦找到,prefix 和 exec_prefix 将分别在 sys.prefix 和 sys.exec_prefix 上可用。

最后,将会处理 site 模块并将 site-packages 目录添加到模块搜索路径。 自定义搜索路径的一个常用方式是创建 sitecustomize 或 usercustomize 模块,如 site 模块文档所描述的那样。

备注

特定的命令行选项可能对路径计算造成额外的影响。 请参阅 -E, -I, -s 和 -S 了解更多细节。

从虚拟环境

如果 Python 运行在虚拟环境中(如 虚拟环境和包 所描述)则 prefix 和 exec_prefix 都将是该虚拟环境专属的。

如果在主可执行文件的相同位置,或者在可执行文件的上一级目录中找到了 pyvenv.cfg 文件,则将应用以下变化形式:

  • 如果 home 是一个绝对路径并且未设置 PYTHONHOME,则在推断 prefix 和 exec_prefix 时将使用此路径而不是主可执行文件的路径。

_pth 文件

若要完全覆盖 sys.path 则请创建一个与共享库或可执行文件 (python._pth 或 python311._pth) 同名的 ._pth 文件。 共享库路径在 Windows 是始终是已知的,但这在其他平台上也许会不可用。 请在 ._pth 文件中为添加到 sys.path 的每个路径指定对应的一行。 基于共享库名称的文件会覆盖基于可执行文件的对应文件,这允许在必要时为任何加载运行时的程序限制路径。

当文件存在时,将忽略所有注册表和环境变量,启用隔离模式,并且:除非文件中的一行指定 import site ,否则不会导入 site 。以  开头的空白路径和行将被忽略。每个路径可以是绝对的或相对于文件的位置。不允许使用除 site 以外的导入语句,并且不能指定任意代码。

请注意,当指定 import site 时, .pth 文件(没有前导下划线)将由 site 模块正常处理。

嵌入式 Python

如果 Python 被嵌入到其他应用程序中则 Py_InitializeFromConfig() 和 PyConfig 结构体可被用来初始化 Python。 路径专属的细节描述见 Python 路径配置。 另外也可以使用较旧的 Py_SetPath() 来绕过模块搜索路径的初始化。

参见

  • 查找模块 了解更多有关 Windows 的细节说明。

  • 在类Unix环境下使用Python 了解 Unix 的相关细节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/252634.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

L1-047:装睡

题目描述 你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你…

智能优化算法应用:基于松鼠算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于松鼠算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于松鼠算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.松鼠算法4.实验参数设定5.算法结果6.参考文献7.MA…

qt实现基本文件操作

先通过ui界面实现基本框架 接下来就要实现每个按键的功能了 我们先来实现新建的的功能,我们右键新建键,可以发现没有转到槽的功能,因此我们要自己写connect来建立关系。 private slots:void newActionSlot(); 在.h文件中加上槽函数。 conne…

PMP项目管理 - 风险管理

系列文章目录 PMP项目管理 - 质量管理 PMP项目管理 - 采购管理 PMP项目管理 - 资源管理 PMP项目管理 - 风险管理 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in…

常见Appium相关问题及解决方案

问题1:adb检测不到设备 解决: 1.检查手机驱动是否安装(win10系统不需要),去官网下载手机驱动或者电脑下载手机助手来辅助安装手机驱动,安装完成后卸载手机助手(防止接入手机时抢adb端口造成干…

【教3妹学编程-算法题】找到 Alice 和 Bob 可以相遇的建筑

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 3妹:好冷啊, 冻得瑟瑟发抖啦 2…

SpringBoot 源码解析2:启动流程1

SpringBoot 源码解析2:启动流程1 1.启动方式2.SpringBootApplication3.SpringApplication3.1 构造器SpringApplication3.2 SpringApplication#run 3.3 SpringApplication#run 中关键方法3.1 SpringApplication#prepareEnvironment3.2 SpringApplication#prepareCont…

CSS篇之圆角梯形

附上一篇文章&#xff1a;梯形tab按钮-基于clip-path path函数实现 - JSRUN.NET 他这个区别在于&#xff0c;收尾两侧都是直角的&#xff0c;如图 下面这个是圆角&#xff1a; 思路&#xff1a; 代码如下&#xff1a; <template><div class"wrap"><…

什么是Vue?

什么是Vue 什么是Vue&#xff1f;Vue 快速入门常用指令生命周期生命周期介绍生命周期 函数调用情况 什么是Vue&#xff1f; Vue 快速入门 常用指令 生命周期 生命周期介绍 生命周期 函数调用情况

Lit官方入门示例

陈拓 2023/12/17-2023/12/17 1. 简介 在《用Vite构建Lit项目》 https://blog.csdn.net/chentuo2000/article/details/134831884?spm1001.2014.3001.5501 一文中我们介绍了怎样用Vite构建Lit项目。 本文我们介绍不依赖Vite的Lit入门示例。 我的开发环境还是和上文相同。 …

C语言—每日选择题—Day50

一天一天的更新&#xff0c;也是达到50天了&#xff0c;精选的题有250道&#xff0c;博主累计做了不下500道选择题&#xff0c;最喜欢的题型就是指针和数组之间的计算呀&#xff0c;不知道关注我的小伙伴是不是一直在坚持呢&#xff1f;文末有投票&#xff0c;大家可以投票让博…

HarmonyOS应用开发者高级认证考试满分答案(100分)【全网最全-不断更新】【鸿蒙专栏-28】

系列文章&#xff1a; HarmonyOS应用开发者基础认证满分答案&#xff08;100分&#xff09; HarmonyOS应用开发者基础认证【闯关习题 满分答案】 HarmonyOS应用开发者高级认证满分答案&#xff08;100分&#xff09; HarmonyOS云开发基础认证满分答案&#xff08;100分&#xf…

【MyBatis-Plus】常用的插件介绍(乐观锁、逻辑删除、分页)

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于MyBatis-Plus的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.为什么要使用MyBatis-Plus中的插…

1. MongoDB快速实战与基本原理

1.MongoDB介绍 1.1 什么是MongoDB MongoDB是一个文档数据库&#xff08;以JSON 为数据模型&#xff09;&#xff0c;由C语言编写&#xff0c;旨在为WEB应用提供可扩展的高性能数据存储解决方案。 文档来自于“JSON Document”&#xff0c;并非我们一般理解的 PDF&#xff0c;…

【Qt图书管理系统】4.系统设计与详细设计

文章目录 核心流程图软件架构设计流程图软件开发类图及功能点 核心流程图 用户登录图书查询图书借阅图书归还账户管理 软件架构设计 流程图 软件开发类图及功能点 Dlg_Login 登录界面 Cell_Main 主窗体 Cell_MyBook 我的书籍 Cell_BookMgr 书籍管理 Cell_RecoredMgr 借阅记录…

cmd发生系统错误 5。的解决方法

我敲[net start mysql]命令时遇到如图报错&#xff0c;下面介绍解决方法&#xff0c;非常简单。 我们只需要更改打开cmd的方式&#xff0c;我之前直接敲WinR组合键&#xff0c;输入cmd命令打开的&#xff0c;不要这样做。我们输入“命令提示符”&#xff0c;然后选择“以管理员…

前后端分离开发

前期 前后端混合开发 后期 前后端分离开发

Windows11环境下配置深度学习环境(Pytorch)

目录 1. 下载安装Miniconda2. 新建Python3.9虚拟环境3. 下载英伟达驱动4. 安装CUDA版Pytorch5. CPU版本pytorch安装 1. 下载安装Miniconda 下载安装包&#xff1a;镜像文件地址 将Miniconda相关路径添加至系统变量的路径中。 打开Anaconda Powershell Prompt&#xff0c;输入…

亚马逊云科技re_Invent 2023产品体验:亚马逊云科技产品应用实践 王炸产品Amazon Q,你的AI助手

本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 意料之中 2023年9月25日&#xff0c;亚马逊宣布与 Anthropic 正式展开战略合作&#x…

联想王传东:AI PC迈入AI Ready 即将开启AI On

“AI PC已经正式迈入AI Ready 阶段&#xff0c;接下来会逐渐进入到AI On阶段。”12月16日&#xff0c;英特尔人工智能创新应用大赛启动仪式在深圳举办。作为独家AI PC合作伙伴&#xff0c;联想集团副总裁、中国区首席市场官王传东代表公司出席仪式并致辞。 王传东认为AI PC的发…