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

如何检测指定Python模块是否通过mypyc编译?

检测Python程序是否由mypyc编译的方法

方法一:利用mypyc内置的MYPYC常量

mypyc在编译代码时会自动定义MYPYC常量为True,普通Python解释器环境下该常量不存在。你可以通过以下代码检测:

try:
    from mypyc.attrs import MYPYC
    is_mypyc_compiled = MYPYC
except ImportError:
    is_mypyc_compiled = False

# 将结果纳入版本信息
version_info = {
    "version": "1.0.0",
    "compiled_with_mypyc": is_mypyc_compiled
}

也可以直接检查全局作用域中的MYPYC(适合在模块内部直接判断):

try:
    is_mypyc_compiled = MYPYC
except NameError:
    is_mypyc_compiled = False

这种方式是最可靠的,因为MYPYC是mypyc编译流程中注入的专属标识,不会和其他C扩展或工具混淆。

方法二:检查模块文件后缀(补充方案)

mypyc编译后的模块会生成平台相关的共享库文件:Linux/macOS下后缀为.so,Windows下为.pyd。可以通过模块的__file__属性判断:

import os
import sys

def check_mypyc_compiled():
    current_module = sys.modules[__name__]
    if not hasattr(current_module, '__file__'):
        return False
    file_ext = os.path.splitext(current_module.__file__)[1].lower()
    return file_ext in ('.so', '.pyd')

is_compiled = check_mypyc_compiled()

注意:这种方法存在误判可能——其他Python C扩展模块也会使用相同后缀,因此仅推荐作为第一种方法的补充验证手段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:33:16