09 模块导入规则 寻找模块 常见问题

news/2024/9/28 8:44:52

模块导入规则

在python内部导入模块时,必须要遵循他的规则,必须去指定的目录中找py文件。

寻找模块一般就三个位置
  • 优先在当前运行脚本的同级目录 【一般问题比较多】

  • python的安装目录 【内置模块】

  • python的安装目录+site-packages 【第三方模块】没有的使用 pip install ? 进行安装

  • 当前运行脚本的同级目录 常见问题

问题1 同名

在当前目录下不要出现与内置模块相同名字模块,如果出现会优先在同级目录下面查找到后,不会在去其他路径进行查找。

问题2:执行主程序

优先在当前运行脚本的同级目录

问题3:Pycharm 自动添加 sys.path

下面场景能导入成功,是因为 pycharm 自动添加 sys.path 导入成功,终端正常不能导入成功

问题4:sys.path 有关
1、在项目根目录,在pycharm可以导入成功,出了pycharm不能导入成功
2、如果在方法在其他目录,在需要导的当前目录不能导入成功
3、当弄不清楚时,就使用sys.path查看下当前查找的目录结构

主动添加sys.path

导入模块时,都是根据sys.path中的目录进行py文件的查找

把当前的项目目录,使用sys.path.append() #添加进去 此方法比较死板,通过下面方法进行优化

建议使用下面方式进行添加:当前项目目录

import osdir_path = os.path.abspath(os.path.abspath(os.path.abspath(__file__)))
sys.path.append(dir_path)

#可以通过下面方式进行查看当前导入模块路径
import sysfor item in sys.path:print(item)"""
D:\dev\python_learn\appSpriderWupeiqi\.venv\Scripts\python.exe D:\dev\python_learn\appSpriderWupeiqi\作用汇总-常用代码\查看导入规则路径-sys.path.py 
D:\dev\python_learn\appSpriderWupeiqi\作用汇总-常用代码
D:\dev\python_learn\appSpriderWupeiqi
D:\dev\python\PyCharm 2023.1.1\plugins\python\helpers\pycharm_display
C:\Python311\python311.zip
C:\Python311\DLLs
C:\Python311\Lib
C:\Python311
D:\dev\python_learn\appSpriderWupeiqi\.venv
D:\dev\python_learn\appSpriderWupeiqi\.venv\Lib\site-packages
D:\dev\python\PyCharm 2023.1.1\plugins\python\helpers\pycharm_matplotlib_backend
"""

相对导入与绝对导入

import db 
import utils.my
from utils import my 
from utils import encryty

同级目录,可以使用绝对路径或者相对路径进行导入,

from .. sqlite import b 其中 .表示当前目录,.. 表示当前目录的上一级目录下面sqlite目录下面的子方法#根目录下面导入时,不能使用相对路径导入

一般情况下

  • 主程序导入其他模块时,一般都是绝对导入。

  • 本身代码在文件夹内,又要导入自己文件夹内的一些其他的Py文件,可以使用【绝对】+【相对】

不相关的模块 【绝对导入】
相关的模块  【相对导入】

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

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

相关文章

WiFi基础(五):802.11帧结构与WiFi控制帧、管理帧、数据帧

802.11 无线 WiFi 有 数据帧,管理帧、控制帧 三种类型帧。这些帧由 9 个部分组成:Frame Control,Duration ID,Address1,Address2,Address3,Seq-ctl,Address4,Frame Body,FCS。需要注意的是,有些组成部分在有些帧里并不是必须的。liwen01 2024.09.22 前言 前面介绍了…

第15课

おきます つくります うります 知ります

产品架构图怎么做才能抓住眼球

产品架构图怎么做才能抓住眼球,即使应用在可视化大屏也不枯燥

02 使用配置文件+反射实现

使用配置文件+反射实现需要遵守:开放封闭原则开放,针对配置开放 封闭,针对功能代码目录结构 unicom- app.py- settings.py- utils - sms.py- wechat.py#seetings.py里面代码 MESSAGE_LIST =["utils.sms.send","utils.wechat.send" ] #sms.py def send(m…

读数据湖仓02数据抽象

数据抽象1. 不同类型的数据 1.1. 不同类型的数据在存储方面有各自的特性,这些特性极大地影响了数据在数据湖仓中的存储和使用方式 1.2. 结构化数据1.2.1. 在企业等组织中,只有少量的数据是结构化数据1.2.2. 结构化数据是基于事务的数据,是组织日常业务的副产品1.3. 文本数据…

结对项目-实现一个自动生成小学四则运算题目的命令行程序

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里 结对项目 - 作业 - 计科22级34班 - 班级博客 - 博客园 (cnblogs.com)这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序成员 3122004742 李思危3122004754 许佳钒github…

Paper Reading: Imbalanced ensemble learning leveraging a novel data-level diversity metric

为了解决基于现有多样性度量的学习复杂性较高的问题,本文提出了一种新的数据级多样性度量 IED。它能够直接基于训练数据集度量多样性,而不需要训练分类器,同时本文也设计了两种基于最优实例配对和贪婪实例配对的 IED 计算方法。在此基础上,本文设计了一种不平衡集成学习模型…

Git 分支本质及与 commit、HEAD、tag 的关系

基于: Git - Git 是什么? Git - 分支简介 Git - 打标签快照 在介绍 Git 分支前,需要知道什么是 commit 对象,介绍 commit 对象前,需要先了解 Git 保存数据的方式。Git 直接记录快照,而非差异比较。 从概念上来说,其它大部分版本控制系统(包括 Subversion 和近似工具)以…