python模块搜索路径_Python模块搜索路径

当一个名为 spam 的模块被导入的时候,解释器首先寻找具有该名称的内置模块。如果没有找到,然后解释器从 sys.path 变量给出的目录列表里寻找名为 spam.py 的文件。sys.path 初始有这些目录地址:

包含输入脚本的目录(或者未指定文件时的当前目录)。

PYTHONPATH (一个包含目录名称的列表,它和shell变量 PATH 有一样的语法)。

取决于安装的默认设置

注解 在支持符号链接的文件系统上,包含输入脚本的目录是在追加符号链接后才计算出来的。换句话说,包含符号链接的目录并 没有 被添加到模块的搜索路径上。

在初始化后,Python程序可以更改 sys.path。包含正在运行脚本的文件目录被放在搜索路径的开头处, 在标准库路径之前。这意味着将加载此目录里的脚本,而不是标准库中的同名模块。 除非有意更换,否则这是错误。更多信息请参阅 python标准模块。

为了加速模块载入,Python在 pycache 目录里缓存了每个模块的编译后版本,名称为 module.version.pyc ,其中名称中的版本字段对编译文件的格式进行编码; 它一般使用Python版本号。例如,在CPython版本3.3中,spam.py的编译版本将被缓存为 __pycache__/spam.cpython-33.pyc。此命名约定允许来自不同发行版和不同版本的Python的已编译模块共存。

Python根据编译版本检查源的修改日期,以查看它是否已过期并需要重新编译。这是一个完全自动化的过程。此外,编译的模块与平台无关,因此可以在具有不同体系结构的系统之间共享相同的库。

Python在两种情况下不会检查缓存。首先,对于从命令行直接载入的模块,它从来都是重新编译并且不存储编译结果;其次,如果没有源模块,它不会检查缓存。为了支持无源文件(仅编译)发行版本, 编译模块必须是在源目录下,并且绝对不能有源模块。

给专业人士的一些小建议:

你可以在Python命令中使用 -O 或者 -OO 开关, 以减小编译后模块的大小。 -O 开关去除断言语句,-OO 开关同时去除断言语句和 doc 字符串。由于有些程序可能依赖于这些,你应当只在清楚自己在做什么时才使用这个选项。“优化过的”模块有一个 opt- 标签并且通常小些。将来的发行版本或许会更改优化的效果。

一个从 .pyc 文件读出的程序并不会比它从 .py 读出时运行的更快,.pyc 文件唯一快的地方在于载入速度。

compileall 模块可以为一个目录下的所有模块创建.pyc文件。

关于这个过程,PEP 3147 中有更多细节,包括一个决策流程图。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI写程序,这事可没那么简单!

摘要: 去年年初,微软公司推出了一款名为DeepCoder的机器学习系统,同时宣称该系统具有自我编码的能力,这一举动又将人工智能的发展向前推进了一步。 正如人工智能是建立在众多机器学习或深度学习方法之上一样,DeepCoder…

希捷银河声音大_【推仔说新闻】那款硬盘它终于来了 希捷推出首款双磁臂硬盘...

经常关注科技新闻的朋友们应该都知道,现在机械硬盘领域可以说是被固态硬盘冲击的不清,而对于我们广大用户们来说,HDD这一个储存介质就被我们更多的用来充当仓库盘使用,毕竟现在的固态已经下探到白菜级别的价格了。但是对于那些HDD…

(需求实战_进阶_06)SSM集成RabbitMQ 订阅模式 关键代码讲解、开发、测试

背景: 为了减轻服务器的压力,现在原有项目的基础上集成消息队列来异步处理消息! 此项目是企业真实需求,项目的代码属于线上生产代码,直接用于生产即可! 此项目采用MQ发送消息模式为:订阅模式,如果对RabbitM…

【目瞪口呆】通信机房内部长这样

戳蓝字“CSDN云计算”关注我们哦!作者 | 小枣君责编 | 刘晶晶大家好,我是小枣君。一直以来,我都在努力给大家做通信知识科普,也写了很多有趣的文章。不过,文章再有趣也只是文字,不是实物。现实生活中&#…

NLP的ImageNet时代已经到来

摘要: NLP领域即将巨变,你准备好了吗? 自然语言处理(NLP)领域正在发生变化。 作为NLP的核心表现技术——词向量,其统治地位正在被诸多新技术挑战,如:ELMo,ULMFiT及Open…

湖南计算机股份有限公司hcc-pr2e,PC台式机电脑如何连接使用HCC PR2E/K10打印机

满意答案一、本地打印机安装1.下载驱动要想连接打印机,首先我们要保证我们的电脑有安装的驱动。如果没有那么我们就要下载驱动(当然如果你有驱动盘就可以直接用)。下载时一定要认真筛选,小编就下了一堆乱七八糟的附属软件。2.安装驱动点开软件&#xff0…

mysql字段分隔符拆分_面试题Mysql数据库优化之垂直分表

在日常的开发工作中,除了JAVA相关的技术,打交道最多的就是Mysql数据库,当数据积累到一定程度,比如500W时就会难免出现一些慢sql,对数据库的优化方式有很多,比如通过增加合理的索引,今天我们来说…

python print用法不换行_python3让print输出不换行的方法

python 3.x版本print输出不换行的格式如下: print(x, end"") 其中,end"" 可使输出不换行,不能省略。 举例:输出结果:内容扩展: python3.x中如何实现print不换行 大家应该知道python中p…

使用Numpy和Opencv完成图像的基本数据分析(Part II)

摘要: 使用Numpy和Opencv完成图像的基本数据分析后续部分,主要包含逻辑运算符操作、掩膜以及卫星图像数据分析等操作 在上一节中,主要是介绍了图像的基本知识以及OpenCV的基本操作,具体内容参见“使用Numpy和Opencv完成基本图像的…

(需求实战_进阶_07)SSM集成RabbitMQ 订阅模式 关键代码讲解、开发、测试

接上一篇:(企业内部需求实战_进阶_06)SSM集成RabbitMQ 订阅模式 关键代码讲解、开发、测试 https://gblfy.blog.csdn.net/article/details/104219096 此项目采用MQ发送消息模式为:订阅模式,如果对RabbitMQ不熟悉,请学习…

分布式事务方案这么多,到底应该如何选型?

戳蓝字“CSDN云计算”关注我们哦!作者 | 温卫斌责编 | 刘晶晶源自 | dbaplus社群作者介绍温卫斌,就职于中国民生银行信息科技部,目前负责分布式技术平台设计与研发,主要关注分布式数据相关领域。微服务兴起的这几年涌现出不少分布…

造大专计算机学历,广昌县职业技术学校计算机应用专业助您 掌握一技之长获大专学历...

——专题宣传报道之四:计算机应用专业计算机应用专业一直是广昌县职业技术学校开设的特色专业。该专业由一批经验丰富、专业优秀的教师任教,主要学习计算机操作、组装、网络应用、影视后期制作、平面设计、文档管理等理论知识和实训课程。特色一&#xf…

阿里云正式推出消息队列Kafka:全面融合开源生态

摘要: 在全面兼容Apache Kafka生态的基础上,消息队列Kafka彻底解决Apache Kafka稳定性不足的长期痛点,并且支持消息无缝迁移到云上。 近日,阿里云宣布正式推出消息队列Kafka,全面融合开源生态。在全面兼容Apache Kafk…

异常将上下文初始化事件发送到类的侦听器实例_Spring的Bean实例化原理,这一次彻底搞懂了!...

前言之前分析了Spring XML和注解的解析原理,并将其封装为BeanDefinition对象存放到IOC容器中,而这些只是refresh方法中的其中一个步骤——obtainFreshBeanFactory,接下来就将围绕这这些BeanDefinition对象进行一系列的处理,如Bean…

代码整洁之道(一)最佳实践小结

摘要: Any fool can write code that a computer can understand. Good programmers write code that humans can understand. 普通的工程师堆砌代码,优秀的工程师优雅代码,卓越的工程师简化代码。 Any fool can write code that a computer …

(需求实战_01) SpringBoot2.x 整合RabbitMQ_生产端

文章目录一、依赖配置引入1. 引入SpringBoot整合RabbitMQ依赖2. 生产者配置文件3. 主配置二、代码Conding2.1. 生产者代码2.2. 实体对象2.3. 测试类一、依赖配置引入 1. 引入SpringBoot整合RabbitMQ依赖 <!--springboot整合RabbitMQ依赖--><dependency><groupI…

ue4集合类型_UE4-Sockets

Sockets(套接字)套接字为通信的端点。通过网络通信的每对进程需要使用一对套接字。套接字组成: IP地址 端口号套接字采用客户机——服务器架构。服务器通过监听指定端口&#xff0c;来等待客户请求。实现特定服务的服务器监听众所周知的端口:telent服务器端口,23ftp服务器监听…

全域图像搜索给你更精准的搜索体验

摘要&#xff1a; 2018飞天技术汇&#xff0c;阿里巴巴机器智能技术实验室的刘磊带来题为全域精准图像搜索介绍的演讲&#xff0c;主要从四个方面进行了阐述&#xff0c;第一部分介绍了图像搜索的基本概念&#xff0c;第二部分主要是讲解了图像搜索的技术架构及其优势&#xff…

【这些都不知道你就是个弟弟】Docker常用命令

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 程序员欣宸转自 | 企业博客责编 | 阿秃除了基本的docker pull、docker image、docker ps&#xff0c;还有一些命令及参数也很重要&#xff0c;在此记录下来避免遗忘。环境信息以下是本次操作的环境&#xff1a;操作系统&…

rx ajax,ajax_RxJS 中文文档_w3cschool

Rx 对象上有一个 ajax 运算符。const ajax: any;描述它使用以下请求对象创建 Ajax 请求的可观察对象&#xff1a; 网址&#xff0c;标头等或网址字符串。使用 ajax()来获取从 API 返回的响应对象。import { ajax } from rxjs/ajax;import { map, catchError } from rxjs/operat…