美文网首页python
python 执行时是如何查找包和模块的

python 执行时是如何查找包和模块的

作者: wit92 | 来源:发表于2020-06-15 00:15 被阅读0次

解释器执行时,

首先搜索 built-in module ,也就是解释器查找模块最先查找的是built-in module ,

其次搜索 sys.path所包含的路径。

这样的查找顺序将会引起同名包或模块被遮蔽的问题。

文件目录结构

├── os.py
├── test2.py
├── redis.py

test2.py文件内容

import os
from redis import Redis

linux命令行执行test2.py:

python test.py

执行结果:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    from redis import Redis
ImportError: cannot import name Redis

由于osbuilt-in module,即使在同目录下有同名模块,解释器依然可以找到正确的os模块,而 redis 属于第三方模块,默认安装位置是 python 环境变量中的 site-packages 下,解释器启动之后会将此目录加入 sys.path,按照上面所说的查找顺序,优先在执行文件所在的目录查找,由于其在 sys.path 的首位,因而本地的redis被导入。

注意:

sys.argv[0] 是获得入口执行文件路径,

__file__ 是获得任意模块文件的路径。

sys.path 打印出来的列表在终端第一个元素是空字符串,但不影响使用。在pycharm不是空字符串。

进入交互式执行环境,解释器会自动把当前目录加入 sys.path, 这时当前目录是以相对路径的形式出现在 sys.path 中:

>>> import os.path
>>> import sys
>>> os.path.abspath(sys.path[0])
'/home/l/PycharmProjects/test_modules'

核心风格: import 语句的模块顺序

推荐所有的模块在 Python 模块的开头部分导入。

而且最好按照以下顺序:
1,Python 标准库模块
2,Python 第三方模块
3,应用程序自定义模块

相关文章

  • Python中的包

    目录 什么是python的包与模块 包的身份证 如何创建包 包的倒入 模块的导入 什么是pytlhon的包 包就是...

  • Python函数(四)

    1、包和模块 包是Python组织代码的基本方式,当脚本导入运行时称之为模块 2、正则表达式,描述了一种字符串匹配...

  • 核心开发

    Python核心开发 一.包和模块 1. 包和模块的定义 为了更加有好的对python代码进行管理,出现了包和模块...

  • python 2.7 -> python 3.7 升级记录

    更换的模块 python 3.7 模块名python 2.7 模块名python 3.7 包python 2.7包...

  • python 模块和包

    模块和包 目标 模块 包 发布模块 01. 模块 1.1 模块的概念 模块是 Python 程序架构的一个核心概念...

  • Python高阶

    包(lib)、模块(module) 在Python中,存在包和模块两个常见概念。 模块:编写Python代码的py...

  • python中的package和modules

    ## 如何认识python中的包和模块 //**//作为一个python小菜鸟,刚接触python并没有多久,也只...

  • 笔记:Python的包和模块的区别

    Python中的模块和包的英文表示: 模块的英文:Module 包的英文:Packages 对模块和包的类比理解:...

  • Python引用模块和查找模块路径

    这篇文章主要介绍了Python引用模块和Python查找模块路径的相关资料,需要的朋友可以参考下 模块间相互独立相...

  • 包和模块

    一、python中包和模块的区别: 1.包:包含 文件的文件夹,导入模块的可通过 变量。2.模块:编写python...

网友评论

    本文标题:python 执行时是如何查找包和模块的

    本文链接:https://www.haomeiwen.com/subject/ivetxktx.html