本文主要是介绍ModuleNotFoundError: No module named main__.xxx NOT ACK,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录结构和内容
# 1 联系至上方思维导图的 tModule包 下的脚本
from .. import quick_sort
list_before=[2,4,9,3,4,5,2,1,5,6,4,2,7,8,6,0]
quick_sort.quickSort2(list_before)
# 报错:ValueError: attempted relative import beyond top-level package# 2
from .funconfig import f2 # 从当前目录查找funconfig,404 not found
f2()
# 即使是相同包内 通过相对导入 还是报如下的错
# 报错信息:ModuleNotFoundError: No module named '__main__.config'; '__main__' is not a package
# 因为相对导入没有指定具体的报名,解释器将其默认设置为__main__# 3
from test.tModule.funconfig import f2 # 绝对路径导入,成功运行
f2() # funconfig.py#4
# 右击tModule --> make directory as source root
from funconfig import f2 # 解释器在执行时自动从source root 开始查找
f2() # funconfig.py
Imagination:
原文地址:
https://stackoverflow.com/questions/41816973/modulenotfounderror-what-does-it-mean-main-is-not-a-package/41817024#41817024
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环境变量(在查询 导入请求 在相对导入中的工作方式之后):该目录的主要架构是:main.pysetup.py---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。然后去main.py:import problem_set_02
运行main.py,即可看到成果f2中的执行结果
您还可以编写一个setup.py以向环境添加特定模块。
Shoulders of Giant
ValueError: attempted relative import beyond top-level package
这篇关于ModuleNotFoundError: No module named main__.xxx NOT ACK的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!