ModuleNotFoundError:在命令行中运行.py脚本时,没有名为“ ####”的模块

时间:2020-11-02 02:31:47

标签: python

这是简化的演示。

project-dir
    |__dir1
         |__dir2
              |__mod1
              |    |__func1.py
              |    |__func2.py
              |__a.py
              |__b.py
# /dir1/dir2/mod1/func1.py
def bar():
    print('this is func `bar` in `func1`')
# /dir1/dir2/mod1/func2.py
def foo():
    print('this is func `foo` in `func2`')
# /dir1/dir2/b.py
def spam():
    print('this is func `spam` in `b`')
# /dir1/dir2/a.py
from dir1.dir2.b import spam
from dir1.dir2.mod1.func1 import bar
from dir1.dir2.mod1.func2 import foo

if __name__ == '__main__':
    print('this is `a`)
    spam()
    bar()
    foo()

当我在命令行中以a.py的身份运行此脚本D:\project-dir>python dir1/dir2/a.py时,发生错误ModuleNotFoundError: No module named 'dir1'。但是当直接在IDE中运行此脚本a.py时,效果很好。如何在命令行中正确运行此脚本?

1 个答案:

答案 0 :(得分:1)

您应该在a.py中进行此操作:

# /dir1/dir2/a.py
from b import spam
from mod1.func1 import bar
from mod1.func2 import foo

if __name__ == '__main__':
    print('this is `a`)
    spam()
    bar()
    foo()

Python允许您在本地目录中导入某些内容。

编辑:

您说您遇到了错误。您可能需要添加一个虚拟__init__.py

相关问题