ModuleNotFoundError: No module named '__main__.xxxx'; '__main__' is not a package
目前正试图在python3中工作,并使用绝对导入将一个模块导入另一个模块,但我得到了错误
1 2 3 4 | proj __init__.py3 (empty) moduleA.py3 moduleB.py3 |
模块A.PY3
1 2 | from .moduleB import ModuleB ModuleB.hello() |
号
模块B.PY3
1 2 3 | class ModuleB: def hello(): print("hello world") |
然后运行
from proj.moduleB import moduleB 或- 你可以创建另一个脚本,比如说
run.py 来调用from proj import moduleA 。
祝你在Python这片神奇的土地上好运。
除了md sabuj sarker的答案之外,python模块文档中还有一个很好的例子。
这就是文档对包内引用所说的:
Note that relative imports are based on the name of the current module. Since the name of the main module is always
"__main__" , modules intended for use as the main module of a Python application must always use absolute imports.
号
如果运行
但是,请注意,如果由于某种原因,包中包含与包同名的模块文件(至少在我的python 3.7上),则绝对导入(
1 2 3 4 5 | proj/ __init__.py (empty) proj.py (same name as package) moduleA.py moduleB.py |
在这种情况下,您将得到:
埃多克斯1〔9〕
或者,您可以删除
也许在导入模块之前可以这样做:
模块A.PY3
1 2 3 4 5 6 | import os import re sys.path.append(os.path.dirname(os.path.abspath(__file__))) from moduleB import ModuleB ModuleB.hello() |
号
将当前目录添加到环境目录