如何在Python模块中正确使用相对或绝对导入?

如何在Python模块中正确使用相对或绝对导入?,第1张

如何在Python模块中正确使用相对或绝对导入

首先,我假设您意识到您编写的内容将导致循环导入问题,因为foo导入bar反之亦然;尝试添加

from foo import bar

to test.py,您将看到它失败。必须更改示例才能正常工作。

因此,您要问的是,当相对导入失败时,回退到绝对导入。实际上,如果您将foo.py或bar.py作为主要模块执行,则其他模块将仅位于根级别,并且它们是否与系统上要选择的其他模块共享名称取决于该模块。
sys.path中的顺序。由于当前目录通常是第一个,因此将选择本地模块(如果有)-即,如果当前工作目录中有一个“
os.py”文件,则将选择它而不是内置目录。

一个可能的建议是:

foo.py

try:    from . import barexcept ValueError:    import barif __name__ == "__main__":    pass

bar.py:

if __name__ == "__main__":    pass

通过从适当位置调用脚本的方式是通常 的方式 更好。

python -m foo.bar

可能是最好的方法。这将模块作为脚本运行。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5644928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存