pycharm导包过程中,因为模块不在同一个包中可能会报错的解决问题

在这里a,b,c三个模块作为引用模块,main作为主要执行模块

一般情况下模块会是放在同一个包中运行,此时按照下图有伴的模块执行是不会发生错误的

但有时侯会出现下面的情况

此时模块是报错的,原因如下:

而该原因是可以追溯到python解释器导入模块时主要的依赖是:sys.path

在这个变量中储存了3个路径,以便于python解释器从上到下按顺序执行代码时,遇到import后根据sys.path中提供的路径查找

其中第一个路径表示的是当前执行的文件所在的目录,第二个和第三个路径都是由系统提供的路径,用于找python自带的模块

所以我们可以用如下命令来查看当前执行文件所处目录

python 复制代码
import sys
sys.path[0]

所以解决方法如下:

但是此时还会报错:

因为在我的b模块中,import所用的sys.path,会因为执行代码所出文件的不同而发生变化

如果只在b中运行:它不会报错,因为a,b,c三个模块在同一个文件夹中,且它所处目录是exercise

但是当我在main中运行,就会报错

因为此时main所处的目录是python_base,在此时所有import执行的所参照的目录都是python_base,而b模块中是直接引用的a模块,所以main的程序会在python_base下面找a,但在该目录下无法找到a的所以会发生报错

解决方式是在b模块中修改

python 复制代码
# 方式一:绝对导入
from python_base.exercise import a,c

# 方式二:相对导入
from . import a,c
相关推荐
明月_清风14 分钟前
FastAPI 从入门到实战:3 分钟构建高性能异步 API
后端·python·fastapi
bellus-20 分钟前
ubuntu26测试win10的ollama大模型性能
python
水木流年追梦22 分钟前
大模型入门-Reward 奖励模型训练
开发语言·python·算法·leetcode·正则表达式
JavaWeb学起来22 分钟前
Python学习教程(六)数据结构List(列表)
数据结构·python·python基础·python教程
liuyunshengsir35 分钟前
PyTorch 动态量化(Dynamic Quantization)
人工智能·pytorch·python
电子云与长程纠缠44 分钟前
UE5制作六边形包裹球体效果
开发语言·python·ue5
DFT计算杂谈1 小时前
KPROJ编译教程
java·前端·python·算法·conda
念恒123061 小时前
Python(循环中断)
开发语言·python
tsfy20032 小时前
Python 处理中文文件名的3个坑(附 Flask 上传解决函数)
开发语言·python·flask·文件上传·中文编码
AI技术控2 小时前
KV Cache 缓存机制的原理和应用:从 Transformer 推理到大模型服务优化
人工智能·python·深度学习·缓存·自然语言处理·transformer