You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何编程判断__main__模块所属的对应包?

可靠判断主脚本所属包的两种方法

方法1:使用__package__内置属性

通过python -m方式运行模块时,Python会自动为入口__main__模块设置__package__属性,值为该模块所属的父包完整名称。你直接判断属性值即可,完全不受PYTHONPATH目录层级、文件路径变化的影响:

if __name__ == "__main__":
    if __package__ == "some_package":
        print("当前主脚本归属于some_package包")

如果是嵌套子包的场景,比如some_package.subpackage.script,__package__的值会是some_package.subpackage,同样可以直接匹配。

方法2:通过__spec__模块元数据校验(兼容性更强)

Python 3.4及以上版本可以读取__main__模块的__spec__属性,该属性存储了模块完整的导入元数据,判断逻辑更严谨,也兼容更多特殊场景:

import sys

if __name__ == "__main__":
    main_mod = sys.modules["__main__"]
    # 判断主模块的完整导入路径是否以some_package开头
    if main_mod.__spec__ and main_mod.__spec__.name.startswith("some_package."):
        print("当前主脚本归属于some_package包")

此处main_mod.__spec__.name的值就是模块的完整导入路径,你示例场景下的值为some_package.script,前缀匹配即可确认从属关系。

如果是直接执行脚本(非-m模式),__package__会为空字符串,__spec__也会为None,两种方法都能正确识别出该脚本不属于任何包的情况。

内容的提问来源于stack exchange,提问作者xaviersjs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:21:01