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
相关推荐
夜雪一千21 分钟前
Python URL解码详解:单层、双重URL解码实战与踩坑指南
linux·服务器·python
VIP_CQCRE22 分钟前
用 Ace Data Cloud 一站式接入 AI 视频生成:HappyHorse Videos API 实战指南
python·aigc·api·ai视频·acedatacloud
kali-Myon27 分钟前
定向 FGSM 攻击:让神经网络《指猫为狗》
图像处理·python·神经网络·安全·机器学习·fgsm
老歌老听老掉牙29 分钟前
旅行商问题:从数学模型到 Python 实战
开发语言·python
CC数分30 分钟前
数据可视化入门:用Python把一堆数字变成一张图
开发语言·python·信息可视化·数据分析
打工仔折腾 AI38 分钟前
Prometheus接入Pushgateway实战:二进制与Docker部署、指标推送与远程写入
后端·python·docker·容器·性能优化·prometheus·ai agent 实战
FYKJ_20101 小时前
springboot鲜花销售系统91056-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
子非鱼eva1 小时前
ONNX模型导出实战:PyTorch 导出 ResNet18 模型
人工智能·pytorch·python·知识图谱·onnx·昇腾知识图谱
Andreapiki1 小时前
数字化审计校招技术备考指南:SQL、Python、BI、RPA学习路径
python·sql·rpa
Rebecca_aLi1 小时前
码匠教育:零基础学 Python,标识符到循环全套基础语法解析
开发语言·python·正则表达式