导自定义的包遇到的问题
首先我列一下我的目录结构
|-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
现在的话就能正常执行了
灵感来源