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

模块导入规则

在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 os

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

#可以通过下面方式进行查看当前导入模块路径
import sys

for 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文件,可以使用【绝对】+【相对】

不相关的模块 【绝对导入】
相关的模块  【相对导入】
posted @   jhchena  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示