python中模块查找的原理与方法详解

yizhihongxing

Python中模块查找的原理与方法详解

在Python中,模块是一个包含Python定义和声明的文件。在Python程序设计中,模块起着非常重要的作用,常用于组织代码、提高代码的复用性和可维护性。但是,当我们的程序中使用一个模块时,Python到底是如何去寻找并加载这个模块的呢?接下来,我们将详细讲解Python中模块查找的原理与方法。

模块的查找路径

在Python中,模块查找的路径由sys.path变量控制,并由一系列目录组成。这些目录层次通常如下所示:

1. 当前目录
2. 环境变量PYTHONPATH里面所包含的目录(如果这个变量没有设置,Python也会去默认的一些位置寻找)
3. Python默认的安装目录

sys.path可以通过以下代码来查看:

import sys
print(sys.path)

执行结果如下:

['', '/usr/local/Cellar/python@3.9/3.9.6_1/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/usr/local/Cellar/python@3.9/3.9.6_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/usr/local/Cellar/python@3.9/3.9.6_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/site-packages', '/usr/local/Cellar/numpy/1.21.1/libexec/nose/lib/python3.9/site-packages']

模块的查找方法

当Python在sys.path中找到了对应的模块名时,它会查找模块并尝试加载它。在模块中,我们可以使用import语句引入另一个模块,或者使用from语句引入模块中特定的函数或类。Python中模块的查找方法有两种:

import语句

当我们使用import语句导入需要的模块时,Python会在sys.path中按照从前到后的顺序查找模块名对应的文件。在找到文件后,Python会读取文件中的内容,创建一个模块对象,并将这个模块对象存储在sys.modules中。如果在查找的过程中,Python没有找到对应的文件,则会抛出ModuleNotFoundError的异常。

代码示例:

import os

if __name__ == '__main__':
    print(os.getcwd()) # 获取当前目录路径

from语句

当我们使用from语句导入模块中特定的函数或类时,Python会首先按照import语句中的方法查找模块,然后找到对应的文件后,读取文件中的内容,并且将结果加入符号表中。然后,Python会按照使用的顺序,从模块中取出相应的对象,并将这个对象添加到当前作用域下。如果在查找的过程中,Python没有找到对应的文件,则会抛出ModuleNotFoundError的异常。

代码示例:

from os import getcwd

if __name__ == '__main__':
    print(getcwd()) # 获取当前目录路径

总结

通过本文的讲解,我们了解了Python中模块的查找路径和查找方法,并学习了如何通过import和from语句导入不同模块中的方法和类。当我们开发Python程序时,需要根据实际情况定义好sys.path变量,以保证Python能够找到所需要的模块。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中模块查找的原理与方法详解 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • C语言中的long型究竟占4个字节还是8个字节(遇到的坑)

    C语言中的long型是一种整型数据类型,占用的字节数取决于编译器和操作系统。 在大多数32位的机器上,long型占4个字节,即32位,范围为2147483647到-2147483648。但是,在现代的64位机器上,long型常常占用8个字节,即64位,范围为9223372036854775807到-9223372036854775808。 由于不同的机器和编…

    人工智能概览 2023年5月25日
    00
  • 使用Python第三方库发送电子邮件的示例代码

    以下是使用 Python 第三方库发送电子邮件的示例代码攻略: 1. 准备工作 要使用 Python 第三方库发送电子邮件,必须先安装 smtplib、email 两个库。可以使用命令行或者 pip 安装: pip install smtplib email 2. 示例一:发送简单邮件 import smtplib from email.mime.text …

    人工智能概览 2023年5月25日
    00
  • Nginx+Tomcat搭建高性能负载均衡集群的实现方法

    为了实现高性能的负载均衡,我们可以使用Nginx和Tomcat进行搭建。下面我会提供完整的攻略,包括环境搭建、配置Nginx和Tomcat、测试等。 环境搭建 我们需要使用两台服务器来搭建集群,一台作为Nginx服务器,一台作为Tomcat服务器。假设它们的IP分别是192.168.1.10和192.168.1.20,操作系统为Centos 7。 在两台服务…

    人工智能概览 2023年5月25日
    00
  • Linux中搭建FTP服务器的方法

    下面是搭建FTP服务器的完整攻略。 准备工作 在搭建FTP服务器之前,需要安装FTP服务程序。一般来说Linux有两个常用的FTP服务程序:vsftpd和proftpd,本次攻略以vsftpd为例进行说明。安装命令为: sudo apt-get install vsftpd -y 配置FTP服务器 安装完FTP服务程序后,需要进行相应的配置,才能实现FTP的…

    人工智能概览 2023年5月25日
    00
  • Windows Me光盘启动安装过程

    Windows Me光盘启动安装过程攻略 前置条件 在进行Windows Me光盘启动安装之前,你需要准备以下物品: Windows Me安装光盘 一台已安装好操作系统的电脑(可用于制作启动盘) 一张空白光盘或U盘(用于制作启动盘) 步骤一:制作启动盘 1.插入空白光盘或U盘 2.打开已安装好操作系统的电脑 3.将Windows Me启动光盘插入电脑 4.打…

    人工智能概览 2023年5月25日
    00
  • win10更新1909提示错误代码0x80073701解决步骤

    下面是关于“win10更新1909提示错误代码0x80073701解决步骤”的完整攻略。 问题描述 在进行Win10系统更新到1909版本时,可能会遇到错误代码为0x80073701的问题,导致更新失败无法完成。 解决步骤 步骤一:使用系统文件检查工具 使用系统自带的文件检查工具可以扫描并修复系统中出现的一些文件损坏或缺失的问题。 在开始菜单中搜索“命令提示…

    人工智能概论 2023年5月25日
    00
  • PPOCRLabel标注的txt格式如何转换成labelme能修改的json格式

    以下是将PPOCRLabel标注的txt格式转换成labelme能修改的json格式的完整攻略: 1. 确认PPOCRLabel标注格式 在将PPOCRLabel标注的txt格式转换成labelme能修改的json格式之前,我们需要首先确定PPOCRLabel标注格式的具体规则和内容。PPOCRLabel标注的txt格式通常是由以下信息组成: 图片名称,标注…

    人工智能概览 2023年5月25日
    00
  • 详解Nginx中基本的内存池初始化配置

    下面是针对 “详解Nginx中基本的内存池初始化配置” 的攻略: 什么是内存池 内存池是类似于内存地址管理的一个机制,在Nginx中起到了非常重要的作用。Nginx的内存池是针对每一种数据结构而定的内存分配器,使用内存池可以让Nginx服务器在高并发下的性能得到更好的保障,防止了不同线程之间的拥抢内存和内存泄漏。 Nginx内存池的基本配置 在Nginx中,…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部