ModuleNotFoundError: No module named '__main__.xxx'; '__main__' is not a package
程序员文章站
2022-07-14 21:15:53
...
目录结构和内容
# 1
list_before=[2,4,9,3,4,5,2,1,5,6,4,2,7,8,6,0]
from .. import quick_sort
quick_sort.quickSort2(list_before)
# ValueError: attempted relative import beyond top-level package
# 2
from .funconfig import f2
f2()
# ModuleNotFoundError: No module named '__main__.config'; '__main__' is not a package
# 3
from test.tModule.funconfig import f2 # 绝对路径导入,成功运行,打印两边内容
f2()
#4
# 右击tModule --> make directory as source root
from funconfig import f2 # 直接忽略tModule的存在
f2() # funconfig.py
注:大家只要在编辑我们的文章时,加入如下所示的py标记,我们的代码片就会变成如上所示的.
```
Imagination:
Translation(我把它结合到我的案例2中,代码如上 #2 所示):
我认为核心问题是当您使用点导入时,例如:
from .funconfig import f2。
它相当于:
from main.funconfig import f2。
我们都知道,这__main__是指您当前的模块1.py(正是从此文件导入 f2 ,name 为 main )。
问题出现了:
当解释器进入时1.py,脚本等于:
from 1.funconfig import f2
显然,1.py 不包含任何名为f2 的模块或实例。
简而言之,解释器不知道您的目录体系结构。
所以我提出了一个更清晰的解决方案,而没有更改python环境变量(在查询 导入请求 在相对导入中的工作方式之后):
该目录的主要架构是:
—problem_set_02/
------init.py
------p01.py
------p02.py
------p03.py
然后写下__init__.py:
from .p_02 import f2(p_92中的函数)
这__main__是__init__,它正是指模块problem_set_02。import problem_set_02
运行main.py,即可看到成果f2中的执行结果
您还可以编写一个setup.py以向环境添加特定模块。
上一篇: jupter notebook 调试
下一篇: 软件构造3.2设计规约笔记
推荐阅读
-
巨坑总结: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使用)
-
Linux云服务ModuleNotFoundError: No module named 'MySQLdb'