这是简化的演示。
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
时,效果很好。如何在命令行中正确运行此脚本?
答案 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
。