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

py2app打包Python应用报错No module named cv2.config-3.9问题咨询

问题根因

py2app依赖的modulegraph依赖检索组件会通过PyPI安装包名查找依赖,而opencv-python包实际对外提供的导入模块名为cv2,二者名称不匹配,导致检索时找不到名为opencv-python的包,触发导入错误。

解决方案

按以下步骤操作即可解决:

  • 第一步:修改项目中的setup.py配置,手动指定包含的模块,同时屏蔽对opencv-python的检索,参考配置如下:
from setuptools import setup
import sys

# 兜底别名映射,可选添加
sys.modules['opencv-python'] = __import__('cv2')

APP = ['app.py']
DATA_FILES = []
OPTIONS = {
    'argv_emulation': True,
    # 手动指定需要打包的依赖模块
    'includes': ['cv2', 'pandas', 'numpy', 'PyQt5'],
    # 显式排除检索不存在的opencv-python包名
    'excludes': ['opencv-python'],
    # 若打包后运行提示cv2动态库缺失,添加以下配置(可通过pip show opencv-python查看Location字段替换对应路径)
    'frameworks': ['/usr/local/lib/python3.9/site-packages/cv2/.dylibs/*']
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
  • 第二步:清理历史打包缓存后重新执行打包命令:
rm -rf build dist
python setup.py py2app
额外校验

打包前可执行pip list确认当前环境下opencv-python、pandas、PyQt5均已安装,且打包使用的Python解释器和运行app.py的解释器为同一个,避免多环境依赖错位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:45:02