PythonIDE Docs
中文
简体中文

c_extensions

内置扩展库清单、可用范围和替代建议。

内置 C 扩展库清单、可用范围与替代建议。文档页,不是可导入模块。

边界:不要写 import c_extensions。第三方含 C/Rust/native 扩展的包,仅已内置或当前环境能安装的可用;opencvtorchscipy 等桌面常见包通常无法直接 pip 到 iOS。优先用内置包、纯 Python 或 PythonIDE 原生模块。

#模块概览

说明
导入无;使用真实包名如 import numpy
适合做什么判断能否 import、选替代路线、写降级逻辑
调用时机脚本开头 try/except ImportError
推荐顺序查下表 → 尝试 import → 失败则换路线
OCR/MLvisioncoreml,非 pip 装 CV 包

#快速开始

安全使用已内置的 numpy

python
try:
    import numpy as np
except ImportError:
    np = None

values = [1, 2, 3, 4, 5]
if np is None:
    mean = sum(values) / len(values)
else:
    mean = float(np.array(values).mean())
print(mean)

#AppUI 示例

在界面展示「内置包可用 / 未内置包需替代」的检查结果(逻辑放按钮回调)。

python
import appui

state = appui.State(
    numpy_ok="—",
    cv2_ok="—",
    hint="点击检查",
)

BUILTIN_TRY = [
    ("numpy", "numpy_ok"),
    ("cv2", "cv2_ok"),
]


def check_imports():
    for module, attr in BUILTIN_TRY:
        try:
            __import__(module)
            setattr(state, attr, "可导入")
        except ImportError:
            setattr(state, attr, "未内置")

    if state.numpy_ok == "可导入":
        state.hint = "数组统计可用 numpy"
    elif state.cv2_ok == "未内置":
        state.hint = "图像处理请用 vision / vision_helper / coreml"
    else:
        state.hint = "检查完成"


def body():
    return appui.NavigationStack(
        appui.Form([
            appui.Section("检查", [
                appui.Button("检查常见包", action=check_imports)
                .button_style("bordered_prominent"),
            ]),
            appui.Section("结果", [
                appui.LabeledContent("numpy", value=state.numpy_ok),
                appui.LabeledContent("cv2", value=state.cv2_ok),
                appui.Text(state.hint).foreground_color("secondaryLabel"),
            ], footer="c_extensions 是文档索引,不是 import 名。"),
        ]).navigation_title("C 扩展")
    )


appui.run(body, state=state)

#API 参考

#已内置 C 扩展库(节选)

典型用途
numpy数组、矩阵、统计
pandas表格数据处理
matplotlib绘图(亦可 AppUI Chart)
cryptography / bcrypt / argon2-cffi加密与哈希
msgpack / msgspec / ujson / rapidjson高性能序列化
zstandard / xxhash压缩与哈希
PyYAML / ruamel.yamlYAML
regex / tornado / httptools工具库

完整列表见应用内文档生成源;新增内置包以运行时为准。

#常见未内置包

cv2opencvscipyscikit-learnsklearntensorflowtorchtorchvisionlxmlpsutilh5pynumbacythongevent 等。

#替代路线

需求优先选择
数组、统计numpypandas
绘图matplotlibappui Chart
OCR、条码、人脸visionvision_helper
图片分类模型coreml
哈希、压缩xxhashzstandard
iOS 设备能力对应原生模块

#降级模式

python
try:
    import numpy as np
except ImportError:
    np = None

def mean_value(values):
    if np is None:
        return sum(values) / len(values)
    return float(np.array(values).mean())

#常见错误

错误写法后果修正
import c_extensions模块不存在使用真实包名
桌面 pip 经验直接套 iOS安装失败查内置表或换原生模块
ImportError 处理脚本直接崩溃try/except + 纯 Python 降级
用未内置 CV 包做 OCR不可用vision

#相关文档

文档用途
coreml端侧图像模型
vision_helperVision 检测 API
原生能力入口iOS 模块索引

#先选路线

路线何时选
内置原生模块优先查 iOS 原生能力
pip / 纯 Python仅在沙盒允许且已有 wheel 时
C 扩展编译仅高级场景;先评估维护成本

#发布前检查

  • 确认目标能力是否已有官方模块或 AppUI 组件
  • 在真机验证权限、离线场景与失败返回值
  • 不要把未审核的扩展当作 App Store 可发布方案

#预期效果

运行示例后,界面应出现文档描述的目标结果;若与预期不符,先看「失败路径」并按返回值或日志排查。