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

使用cx-freeze打包时遭遇'libcamera._libcamera'模块未找到错误的解决方法

问题:cx-freeze打包含Picamera2的Python项目时缺失libcamera._libcamera模块

环境与打包背景

  • Python版本:3.9.2
  • cx-freeze版本:6.1.0
  • 运行环境:树莓派4 64位Bullseye系统,搭配Pi Camera Module v3
  • 打包尝试:最初使用PyInstaller,即使在hiddenImport中指定QGLPicamera仍无法完成打包;改用cx-freeze后,生成的可执行文件运行时出现模块缺失错误

报错信息

File "/home/pi/.local/lib/python3.9/site-packages/cx_Freeze/initscripts/__startup__.py", line 130, in run
    module_init.run(name + "__main__")
File "/home/pi/.local/lib/python3.9/site-packages/cx_Freeze/initscripts/console.py", line 16, in run
    exec(code, module_main.__dict__)  # pylint: disable=exec-used
File "main.py", line 5, in <module>
File "<frozen zipimport>", line 259, in load_module
File "/home/pi/Desktop/SESA 6.0.0/src/elec_interface.py", line 2, in <module>
    from import_lib import *
File "<frozen zipimport>", line 259, in load_module
File "/home/pi/Desktop/SESA 6.0.0/src/import_lib.py", line 77, in <module>
    from picamera2 import Picamera2,Preview
File "/usr/lib/python3/dist-packages/picamera2/__init__.py", line 1, in <module>
    import libcamera
File "/usr/lib/python3/dist-packages/libcamera/__init__.py", line 4, in <module>
    from ._libcamera import *
ModuleNotFoundError: No module named 'libcamera._libcamera'

当前使用的setup.py配置

from cx_Freeze import setup, Executable

options= {
    'build_exe':{
        'packages' : ['libcamera'],
        'build_exe' : '../dist/',
    }
}

setup(
    name = "SESA",
    version = "6.0",
    description = "",
    options = options,
    executables = [Executable("main.py")]
)

解决思路

  • 手动复制C扩展模块文件:libcamera._libcamera是C扩展模块,对应系统中的_libcamera.so文件(路径通常为/usr/lib/python3/dist-packages/libcamera/_libcamera.so)。在setup.py的build_exe选项中添加include_files参数,将该文件复制到打包后的对应目录:
    修改后的options示例:

    options= {
        'build_exe':{
            'packages' : ['libcamera', 'picamera2'],
            'build_exe' : '../dist/',
            'include_files': [('/usr/lib/python3/dist-packages/libcamera/_libcamera.so', 'libcamera/_libcamera.so')]
        }
    }
    

    注意:先通过ls /usr/lib/python3/dist-packages/libcamera/确认该文件存在,路径需匹配实际系统位置。

  • 强制指定包含子模块:在build_exe选项中添加'includes': ['libcamera._libcamera'],让cx-freeze明确识别并处理这个子模块。

  • 检查并复制所有依赖文件:查看libcamera目录下的其他必要文件(如相关.so库),如果有需要,一并加入include_files列表中。

  • 验证打包后的文件结构:打包完成后,进入../dist/libcamera/目录,确认_libcamera.so是否存在;若未自动复制,手动将文件拷贝到该目录后再测试运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:05:09