有一个这样的文件结构:
root
|--project1
| |--__init__.py
| |--subrunner.py
| |--proc.py
|--project2
|--projectN
|--runner.py
跑步者.py
from project1.subrunner import foo
foo()
subrunner.py
此导入版本:
from proc import bar
def foo():
bar()
允许你运行subrunner,但在启动时runner我们得到一个错误:ModuleNotFoundError: No module named 'proc'.
而这个导入版本:
from .proc import bar
通过点相对,反之亦然。允许你运行runner,但是当你运行时subrunner我们得到一个错误:ModuleNotFoundError: No module named '__main__.proc'; '__main__' is not a package
如何正确导入,使其在启动时runner和启动时都能正常工作subrunner?
“正确”选项是:
同时,我的 subrunner 看起来像这样:
您需要使用
-m解释器键启动 subrunner:输出:
如果将以下代码放在
__init__.py目录文件中:Project1那么当使用程序作为一个包(启动
runner.py)时,你将不必编辑导入,保持它们绝对from proc import bar。