Python ModuleNotFoundError:没有名为'####';在命令行中运行.py脚本时

Python ModuleNotFoundError:没有名为'####';在命令行中运行.py脚本时,python,Python,这是简化的演示 project-dir |__dir1 |__dir2 |__mod1 | |__func1.py | |__func2.py |__a.py |__b.py 当我在命令行中以D:\project dir>python dir1/dir2/a.py的形式运行此脚本时,出现错误modulenofounde

这是简化的演示

project-dir
    |__dir1
         |__dir2
              |__mod1
              |    |__func1.py
              |    |__func2.py
              |__a.py
              |__b.py

当我在命令行中以
D:\project dir>python dir1/dir2/a.py
的形式运行此脚本时,出现错误
modulenofounderror:没有名为“dir1”的模块。但是当直接在IDE中运行这个脚本
a.py
时,它就可以工作了。如何在命令行中正确运行此脚本?

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

#/dir1/dir2/a.py
从b导入垃圾邮件
从mod1.func1导入栏
从mod1.func2导入foo
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
print('这是'a`)
垃圾邮件()
bar()
foo()
Python允许您导入本地目录中的内容

编辑:


你说你有错误。根据您使用的python版本,您可能需要在每个模块(一个虚拟模块)下添加一个虚拟的
\uuuu init\uuuuuuuuupy.py
文件。我正在使用python 3.7并遵循@KetZoomer的答案,而没有添加
\uuuuu init\uuuuuuuuupy
文件,而一些
未解析的引用“###
仍然存在。是的,未解析引用之所以发生,是因为您没有
\uuu init\uuuu.py
,请阅读@Abhilash的注释谢谢,它可以工作,IDE中有一些语法包装,例如
未解析引用“b”
。如何解决这个问题?@TAOGS,请选择正确答案(勾选),谢谢
# /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()