ModuleNotFoundError: No module named '__main__.f1stday'; '__main__' is not a package
遇到个比较奇葩的问题,百度也没找到原因.看他报错意思是没找到那个模块。。。
首先先看下目录结构
代码也如上图,主要错误就是导入模块导致的。不过我这边是导入的.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这个文件,遂删除这个文件尝试相对导入果然就报了这个错误。
然后之前有印象记得还有个大兄弟也没找到这个原因但是解决了这个问题,他的方法是选中你相对导入的那个文件夹,右键,然后选中 Mark Directory as 具体如图:
但是具体博客地址记不得了,如果那位大兄弟看到了麻烦私信我地址,贴上去。确实找不到了,是前段时间看到的,但是一直没找到原因所以也没有来更新,见谅
推荐阅读
-
解决Python源码编译时提示:ModuleNotFoundError: No module named ‘distutils.command‘
-
巨坑总结:ModuleNotFoundError: No module named ‘tools‘引发的一系列问题
-
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
-
Python3中无法导入ssl模块的解决办法和python3.7 ModuleNotFoundError: No module named bz2解决办法
-
Centos7 执行firewall-cmd –permanent –add-service=mysql报错“ModuleNotFoundError: No module named 'gi'”
-
web.py设置SSL支持(HTTPS,解决错误 ModuleNotFoundError: No module named 'web.wsgiserver')
-
【昊鼎王五】执行python3脚本,报“ModuleNotFoundError: No module named 'dateutil'”错的解决方法
-
解决pycharm终端/cmd运行python脚本报错“ImportError/ModuleNotFoundError:No Module named ...”
-
ModuleNotFoundError: No module named 'scrapy.contrib'------使用ImagesPipeline时候--参考官方文档
-
ModuleNotFoundError: No module named 'torch'(anaconda安装好Pytorch却无法在Jupyter notebook使用)