(自定义包导包失败一万次的经验)ModuleNotFoundError: No module named ‘xxx‘

文章讲述了在Python项目中遇到导入自定义包问题,详细探讨了不同尝试如调整sys.path、修改目录结构等方案。最终,通过添加../../到sys.path成功解决了从src.poi导入模块的问题。
摘要由CSDN通过智能技术生成

导自定义的包遇到的问题

首先我列一下我的目录结构
|-src
	|-__init__.py
	|-Dao
		|-insertData.py
	|-pojo
		|-DataBaseDao
		|-everyData

我现在在我的insertData.py通过from src.pojo import DataBaseDao,everyData导包,在pycharm中可以正常运行,但是在控制台运行失败,提示

ModuleNotFoundError: No module named 'src'

方案一:我失败了

import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from src.pojo import DataBaseDao,everyData

在这里插入图片描述

原因

因为os.path.abspath(__file__)获取到的是insertData.py的绝对路径;

要想成功得改变文件结构

|-src
	|-__init__.py
	|-insertData.py
	|-Dao
	|-pojo
		|-DataBaseDao
		|-everyData

如果文件结构是这样,那么上面这个方案能成功,但是我的文件结构不想改成这样

方案二:我失败了

import os
import sys
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
from src.pojo import DataBaseDao,everyData

在这里插入图片描述

其实方案二就像方案一的拆解,错的都一样,一样的改变文件结构才能解决

方案三:失败

import sys
sys.path.append('../')
from src.pojo import DataBaseDao,everyData

在这里插入图片描述

这个方案我虽然失败了,但是我发现该方案你往上退一格执行就能在终端执行了
在这里插入图片描述
可以对比一下我的文件结构查看

方案四:成功

方案四就相当于方案三的另一种表达方式

import sys
sys.path.append('../../')
from src.pojo import DataBaseDao,everyData

现在的话就能正常执行了

灵感来源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值