pythonでのカメラ制御

ラズベリーパイのカメラモジュールを接続してpythonで動かそうとしたのですが

no module named picamraとエラーを返されてしまいました。
sudo apt-get install python-picamera
sudo apt-get update
を実施したのですが結果は変わらなかったです

原因はなんでしょうか?

posted by takeo.myojin on 2015-01-14 00:12

釣りかもしれませんが、念のためまじめに返事してみます。
まず、updateとinstallの順番を逆にして試しましょう。
次に、真摯な答えを期待するには最低限エラーログ、できればソースコードを提示しましょう。
最後に、おそらくpicamera公式ドキュメントや開発者にたどり着ける有用なサイトがこちらにあります。
http://bit.ly/1wZdyd8

posted by llacarte on 2015-01-14 21:02

回答ありがとうございます。
問題が起きた後、いったんやめてから後でフォーラムに投稿しようと思いつき勢いで書いてしまいました。
マナーが欠如していたとおもいます。申し訳ございません。
ソースコードに関してはとある雑誌のソースコードをそのまま書いていたものなので
あえて提示しなかったのですがアドバイスがほしいので出します。
import time
import picamera

from webob import Request, Response

#ここからHTMLソース
html = """
Camera Control

"""
#ここまでHTMLソース

class WebApp(object):
def save_picture(self ,filename):
with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.start_preview()
time.sleep(2)
camera.capture(filename)

def __call__(self ,environ ,start_response):
global html

req = Request(environ)
if req.path=='/image.jpg':
self.save_picture('image.jpg')
bin_data = open('image.jpg', 'rb').read()
resp = Response(bin_data ,content_type='image/jpeg')
elif req.path=='/':
button = req.params.get('button', '')
resp = Response(html)
else:
resp = Response()

return resp(environ, start_response)

application = WebApp()

if __name__ == '__main__':
from wsgiref.simple_server import make_server
port = 8080
httpd = make_server('', port, application)
print('Serving HTTP on port %s...' % port)
httpd.serve_forever()
-------------------------------------------------------------------------------------
エラー内容
Traceback (most recent call last):
File "webcamera.py", line 2, in
import picamera
ImportError: No module named picamera

ちなみにupdateとinstallの順番を逆にしてやってみましたが
同じエラーが表示されました。

posted by takeo.myojin on 2015-01-14 23:04

updateとinstallを実行した際のログもご提示いただけると何かわかるかもしれません。
エラーが言っているのはpythonがpicameraというモジュールを見つけていないので、原因は
1、インストール済みだが、パス・権限の関係でpythonが見つけられなかった
2、インストールに失敗している
のどちらかだと思われますので、やはりupdateとinstallの実行ログをお願いします。

googleで検索すると上記1に関連して、ユーザーが管理者の場合にpicameraが見つからないというのが多々見られますので、ご提示のソースを管理者(root)として実行していないかどうか(sudo python ***.pyしていないか)、そもそも使っているユーザーがrootかどうかも確認してみてください。

気になる点として、webobについてあまり詳しくないですが、こちらのコードは単純にpython ***.pyとして実行していますか?それともCGIなどとしてブラウザからアクセスしていますか?後者の場合はユーザがwebサーバーのユーザーになりますので、そのユーザーを確認する必要があります。

posted by llacarte on 2015-01-15 11:34

アドバイスを参考にいろいろ見直したら解決できました。
このプログラムは「python3 webcamera.py」で実行していたのですが
インストールするべきカメラのモジュール制御は「sudo apt-get install python-picamera」ではなく
「sudo apt-get install python3-picamera」のようでこれを実施したら動作できました。
アドバイスありがとうございます。

posted by takeo.myojin on 2015-01-15 23:44

解決できてよかったです。おめでとうございます。
念のため、python3をお使いということで、これはご存じかもしれませんが、python2.*と3.*では色々違っていて、現時点で多くのモジュールはまだ2.*にしか対応していません。(開発が止まっているけど使いやすくてみんな使うモジュールは当然ながら今後も2.*対応しかありません)従って今後このスクリプトを改造して機能を増やしたりする際はご注意なさるといいかと思います。

posted by llacarte on 2015-01-16 08:58

Read Terms of Service upon submitting. 投稿する前に利用規約をお読みください。