Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Buildroot上的Python picamera?_Python_Raspberry Pi_Buildroot - Fatal编程技术网

Buildroot上的Python picamera?

Buildroot上的Python picamera?,python,raspberry-pi,buildroot,Python,Raspberry Pi,Buildroot,来自picamera import picamera的在buildroot生成的linux映像上的python3.7中给出了以下错误。感谢关于如何修复的建议。谢谢 /usr/bin/python3.7: symbol 'mmal_port_pool_create': can't resolve symbol /usr/bin/python3.7: symbol 'mmal_list_push_front': can't resolve symbol /usr/bin/python3.7: sym

来自picamera import picamera的
在buildroot生成的linux映像上的python3.7中给出了以下错误。感谢关于如何修复的建议。谢谢

/usr/bin/python3.7: symbol 'mmal_port_pool_create': can't resolve symbol
/usr/bin/python3.7: symbol 'mmal_list_push_front': can't resolve symbol
/usr/bin/python3.7: symbol 'mmal_list_destroy': can't resolve symbol
/usr/bin/python3.7: symbol 'mmal_rational_to_fixed_16_16': can't resolve symbol
/usr/bin/python3.7: symbol 'mmal_status_to_string': can't resolve symbol
/usr/bin/python3.7: symbol 'mmal_list_push_back': can't resolve symbol
/usr/bin/python3.7: symbol 'mmal_list_create': can't resolve symbol
/usr/bin/python3.7: symbol 'mmal_list_insert': can't resolve symbol
/usr/bin/python3.7: symbol 'mmal_rational_equal': can't resolve symbol
/usr/bin/python3.7: symbol 'mmal_list_pop_front': can't resolve symbol
/usr/bin/python3.7: symbol 'mmal_port_type_to_string': can't resolve symbol
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.7/site-packages/picamera/__init__.py", line 72, in <module>
    from picamera.exc import (
  File "/usr/lib/python3.7/site-packages/picamera/exc.py", line 41, in <module>
    import picamera.mmal as mmal
  File "/usr/lib/python3.7/site-packages/picamera/mmal.py", line 49, in <module>
    _lib = ct.CDLL('libmmal.so')
  File "/usr/lib/python3.7/ctypes/__init__.py", line 356, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen() error
/usr/bin/python3.7:符号'mmal\u port\u pool\u create':无法解析符号
/usr/bin/python3.7:符号“mmal\u list\u push\u front”:无法解析符号
/usr/bin/python3.7:符号“mmal\u list\u destroy”:无法解析符号
/usr/bin/python3.7:符号'mmal\u rational\u to\u fixed\u 16\u 16':无法解析符号
/usr/bin/python3.7:符号'mmal_status_to_string':无法解析符号
/usr/bin/python3.7:符号“mmal\u list\u push\u back”:无法解析符号
/usr/bin/python3.7:符号“mmal\u list\u create”:无法解析符号
/usr/bin/python3.7:符号“mmal\u list\u insert”:无法解析符号
/usr/bin/python3.7:符号'mmal_rational_equal':无法解析符号
/usr/bin/python3.7:符号“mmal\u list\u pop\u front”:无法解析符号
/usr/bin/python3.7:符号'mmal_port_type_to_string':无法解析符号
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python3.7/site packages/picamera/_init__.py”,第72行,在
从picamera.exc进口(
文件“/usr/lib/python3.7/site packages/picamera/exc.py”,第41行,在
将picamera.mmal导入为mmal
文件“/usr/lib/python3.7/site packages/picamera/mmal.py”,第49行,在
_lib=ct.CDLL('libmmal.so')
文件“/usr/lib/python3.7/ctypes/_init__.py”,第356行,在_init中__
self.\u handle=\u dlopen(self.\u名称,模式)
OSError:dlopen()错误

启用摄像头并重新启动您需要选择
rpi userland
软件包

我假设你在做覆盆子圆周率,否则picamera不适合你开始

picamera试图打开libmmal.so共享库。
rpi userland
Buildroot包将下载、构建和安装此库

如果您为
python picamera
创建了一个Buildroot包,那么您应该将
select BR2_-package\u-RPI\u-USERLAND
添加到它的
Config.in
文件中,并复制RPI-USERLAND包的依赖项。在
python picamera.mk
文件中,您应该添加
python\u-picamera\u-dependenciences+=RPI-USERLAND
。这是将确保在启用picamera时始终选择并生成包

此外,如果您有一个工作<代码> Python PICAMAMA 包,请考虑在

之后将其发送到上游。
如果您没有为
python picamera
制作Buildroot包,这可能是问题的根源。PyPI的picamera包与特定版本的libmmal链接,该版本可能与Buildroot中的版本不同。这可能会导致导入模块时出现错误。

FWIW我最后只看到了我们我在翻跟斗

  raspistill_params = (' -n'
  + ' -ISO ' + str(iso)
  + ' -ss ' + str(shutter_speed)
  + ' -mm ' + meter_mode
  + ' -ex ' + exposure_mode
  + ' --ev ' + str(exposure_compensation)
  + ' -awb ' + awb_mode
  + ' -br ' + str(brightness)
  + ' -co ' + str(contrast)
  + ' -sa ' + str(saturation)
  + ' -sh ' + str(sharpness)
  + ' -drc ' + drc_strength
  + ' -rot ' + str(rotation) 
  + ' -q ' + str(quality) 
  + ' -w ' + str(width) 
  + ' -h ' + str(height) 
  + ' -ae ' + str(annotate_text_size) + ',0xff,0x808000 '
  + ' -a "' + annotate_text + '"'
  + ' -x GPS.GPSLatitudeRef=' + exif_lat_ref(latitude)  
  + ' -x GPS.GPSLatitude=' + exif_latlong(latitude)  
  + ' -x GPS.GPSLongitudeRef=' + exif_long_ref(longitude)  
  + ' -x GPS.GPSLongitude=' + exif_latlong(longitude) 
  + ' -o ' + filename
  )

  proc = subprocess.Popen("raspistill " + raspistill_params, shell=True, stdout=subprocess.PIPE)
  ret_val = proc.communicate() 

您好,欢迎使用Stack Overflow,您需要首先显示您的尝试,如果我最初没有将其放入代码块中,请仔细检查并向我道歉,但导致上述错误的只是python的一行:
来自picamera import picamera
谢谢,但我没有使用raspbian,因此这不会起作用。@NJS如果您需要任何帮助,请联系我们我们必须提供更具体的信息谢谢这些提示。我已经在buildroot和libmmal中选择了rpi userland。so在/usr/lib中,但我仍然收到了上述错误。至于python picamera包,我没有在buildroot中包含它(我很想这样做,但我是buildroot和makefiles的新手,所以我使用menuconfig做所有事情).相反,我只是在pi上安装了picamera和pip,运行我用buildroot制作的linux映像。如果您愿意带我了解如何在buildroot中包含picamera包,我将不胜感激。这些符号确实存在于libmmal.so AFAICS中(您可以执行
readelf-s output/target/usr/lib/libmmal.so
并验证所有这些符号是否都在那里,以便在您这边进行检查)。也许PyPI的包和你的Buildroot版本之间存在二进制不兼容。谢谢你的进一步建议。当我运行
readelf-s output/target/usr/lib/libmmal时。所以
在托管Buildroot的Ubuntu虚拟机上,我看到列出了其中三个符号:mmal_port_pool_create、mmal_status_to__字符串和mmal_port_type_to_字符串,但是其余的都不见了。这有什么线索吗?我现在意识到:如果你从pypi下载二进制文件,而不是自己构建,那么该二进制文件可能与使用不同符号的库的不同版本相链接。我认为你必须自己构建它,也就是说,将其添加为Buildroot包。它可能足以运行
utils/scanpypi-picamera
和更新
package/Config.in
。谢谢,这些步骤似乎可以作为buildroot软件包添加,但现在make在进入安装部分时失败:
  raspistill_params = (' -n'
  + ' -ISO ' + str(iso)
  + ' -ss ' + str(shutter_speed)
  + ' -mm ' + meter_mode
  + ' -ex ' + exposure_mode
  + ' --ev ' + str(exposure_compensation)
  + ' -awb ' + awb_mode
  + ' -br ' + str(brightness)
  + ' -co ' + str(contrast)
  + ' -sa ' + str(saturation)
  + ' -sh ' + str(sharpness)
  + ' -drc ' + drc_strength
  + ' -rot ' + str(rotation) 
  + ' -q ' + str(quality) 
  + ' -w ' + str(width) 
  + ' -h ' + str(height) 
  + ' -ae ' + str(annotate_text_size) + ',0xff,0x808000 '
  + ' -a "' + annotate_text + '"'
  + ' -x GPS.GPSLatitudeRef=' + exif_lat_ref(latitude)  
  + ' -x GPS.GPSLatitude=' + exif_latlong(latitude)  
  + ' -x GPS.GPSLongitudeRef=' + exif_long_ref(longitude)  
  + ' -x GPS.GPSLongitude=' + exif_latlong(longitude) 
  + ' -o ' + filename
  )

  proc = subprocess.Popen("raspistill " + raspistill_params, shell=True, stdout=subprocess.PIPE)
  ret_val = proc.communicate()