从命令提示符运行脚本时,无法将PiCamera初始化为类成员

Pep*_*ier 5 camera python-2.7 raspberry-pi

在我的Raspberry Pi上,我遇到了关于使用PiCamera模块的奇怪行为.

从IDLE(F5)或命令提示符($ python test.py)启动时,以下代码运行顺畅

import picamera

if __name__ == "__main__":
    camera=picamera.PiCamera()
    camera.close()
Run Code Online (Sandbox Code Playgroud)

但是当我将相机对象放入类中时,代码将仅在从IDLE(F5)启动时运行:

import picamera

class VF:
    def __init__(self):
        self.camera = picamera.PiCamera()

    def __del__(self):
        self.camera.close()


if __name__ == "__main__":
    myvf = VF()
Run Code Online (Sandbox Code Playgroud)

当我从命令提示符启动上面的代码时,我收到以下错误消息:

mmal:mmal_vc_component_enable:无法启用组件:ENOSPC

回溯(最近一次调用最后一次):文件"test.py",第14行,myvf = VF()

文件"test.py",第6行,在init self.camera = picamera.PiCamera()

文件"/usr/lib/python2.7/dist-packages/picamera/camera.py",第379行,在init camera_num中,self.STEREO_MODES [stereo_mode],stereo_decimate)

文件"/usr/lib/python2.7/dist-packages/picamera/camera.py",第505行,_init_camera prefix ="无法启用相机组件")

文件"/usr/lib/python2.7/dist-packages/picamera/exc.py",第133行,在mmal_check中引发PiCameraMMALError(状态,前缀)

picamera.exc.PiCameraMMALError:无法启用相机组件:资源不足(内存除外)

相机模块工作正常,我只是将代码剥离到尽可能小的尺寸.有人知道这个问题,或类似的问题,并可能提供解决方案吗?Python版本为2.7,Raspberry Rasbiab-System完全是最新版本.提前致谢.

Pep*_*ier 2

发现,当未显式调用析构函数时,相机模块未正确关闭(LED 已关闭,因此没有看到这一点)。

IDLE 通过在脚本启动之前以某种方式重置正在运行的相机来处理正在运行的相机,但不是 python 解释器。

所以现在在脚本结束之前调用析构函数时一切正常。