ModuleNotFoundError: No module named '__main__.f1stday'; '__main__' is not a package

遇到个比较奇葩的问题,百度也没找到原因.看他报错意思是没找到那个模块。。。
首先先看下目录结构ModuleNotFoundError: No module named '__main__.f1stday'; '__main__' is not a package_第1张图片
代码也如上图,主要错误就是导入模块导致的。不过我这边是导入的.f1stday
然后被导入模块里面有个if ——name——==“——main——”


bob = {'name ':'Bob Smith','age':40,'pay':40000,'job':'dev'}
sue = {'name':'SUE jones','age':23,'pay':20000,'job':'eng'}
tom = {'name':'tom chen','age':24,'pay':80000,'job':'python'}
db = {}
db['bob']=bob
db['sue'] = sue
db['tom'] = tom

if __name__ == '__main__':
    import pickle
    for key in db:
        print(key,'=>',db[key])
    dbfile = open('people-pickle','wb')
    pickle.dump(db,dbfile)
    dbfile.close()

    file = open('people-pickle','rb')
    ab = pickle.load(file)
    print(ab)
    file.close()

但是实际上这玩意儿不在顶层代码中并不会被执行也应该不会影响后面的东西。反正猜测就是from.的坑。所以后来将from.改成了具体的目录就解决了。
from python编程.fristday.f1stday import tom
然后第二个猜测是被导入模块的测试代码引起的,删掉测试代码之后的东西进行测试发现结果还是那个结果,所以排除测试代码即if ——name——==“——main——”的原因。那么在这段代码里面 .from xx import xxxxx是行不通的,必须要明确的指出导入路径。具体是什么原因我还是没搞懂。从各个文档上面来看 from. import xxx理论上是没有问题的。暂时这个问题我确实找不到原因,也没查到有效的资料,之后慢慢深入再来找原因,这个问题先记录在这里

更新
===========================================================

后来在Stack Overflow上面看到一个小哥的解释觉得很有道理,自己试了一下也重现了这个问题
那就是你的那个文件夹可能没有init.py这个文件,遂删除这个文件尝试相对导入果然就报了这个错误。ModuleNotFoundError: No module named '__main__.f1stday'; '__main__' is not a package_第2张图片
然后之前有印象记得还有个大兄弟也没找到这个原因但是解决了这个问题,他的方法是选中你相对导入的那个文件夹,右键,然后选中 Mark Directory as 具体如图:ModuleNotFoundError: No module named '__main__.f1stday'; '__main__' is not a package_第3张图片
但是具体博客地址记不得了,如果那位大兄弟看到了麻烦私信我地址,贴上去。确实找不到了,是前段时间看到的,但是一直没找到原因所以也没有来更新,见谅

你可能感兴趣的:(基础篇)