首页 > 解决方案 > Python:从脚本模式切换到模块模式

问题描述

我有一个包含多个子包的复杂存储库结构:

/foo/file1.py
/foo/file2.py
/foo/bar/file3.py
/common/shared.py

(非常简化的版本)

所有包引用都是从根明确地相对或绝对的。一切正常,但我需要使用根目录中的全名将所有脚本作为模块运行,例如:python -m foo.file1. 存储库的编码指南是并且将继续使用这种模式来运行脚本。

然而,有没有办法让一些文件在这个设置中作为脚本运行?

例如,我希望我可以这样做:

if not __package__:
    __package__ = "foo.bar"

# use relative or absolute imports as if the file was run with python -m

我已经尝试过importlibrunpy没有成功。使用sys.path.append使绝对导入有效,但相对导入仍然是一个问题。

标签: pythonpython-importpython-modulepython-importlib

解决方案


推荐阅读