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

导自定义的包遇到的问题

首先我列一下我的目录结构
|-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

现在的话就能正常执行了

灵感来源

你可能感兴趣的:(python,数学建模,开发语言,pycharm)