Milkcocoaのpython sdk使おうとしていろいろはまった話
この記事は、Milkcocoa Advent Calendar 2016 の5日目の記事です。
Milkcocoa Advent Calendar 2016
http://qiita.com/advent-calendar/2016/milkcocoa
Milkcocoaを使って何か作ろうと思っていたのですが、
python sdkを使い始めるまでのところでいろいろはまったので。
はまった点について、つらつらと書いていくことにしました。。
Milkcocoa python_sdk
https://github.com/milk-cocoa/python_sdk
Pythonの環境
Pythonは、anaconda3-4.1.1で、3.5.2を使用しました。
$ python --version
Python 3.5.2 :: Continuum Analytics, Inc.
Milkcocoa python_sdkのセットアップ
Pythonの環境が準備できたので、
Milkcocoa python_sdkをセットアップします。
$ git clone https://github.com/milk-cocoa/python_sdk.git
$ cd python_sdk
$ python setup.py install
Traceback (most recent call last):
File "setup.py", line 29, in <module>
install_requires=get_packages(),
File "setup.py", line 22, in get_packages
requirements = [requirement.req.project_name for requirement in requirements]
File "setup.py", line 22, in <listcomp>
requirements = [requirement.req.project_name for requirement in requirements]
AttributeError: 'Requirement' object has no attribute 'project_name'
が、上記のようなエラーがでてしまいます。
この問題は以下にpullreqが上がっているので、これを参考に対処します。
セットアップがうまくいかなかったので修正 | milk-cocoa/python_sdk #3
https://github.com/milk-cocoa/python_sdk/pull/3
setup.pyを以下に従って修正。
https://github.com/milk-cocoa/python_sdk/pull/3/files
再度インストールを試みます。
$ python setup.py install
running install
running bdist_egg
running egg_info
※途中省略※
Finished processing dependencies for milkcocoa-python-sdk==1.0
インストールできたようです。
$ pip freeze | grep milkcocoa
milkcocoa-python-sdk==1.0
サンプルを動かす
次に、README.mdに記載されているサンプルを抜粋して動かしてみます。
{your-app-id}の部分は、作成したMilkcocoaアプリのIDに置き換えます。
sample.py
import sys
import time
import milkcocoa.milkcocoa as milkcocoa
milkcocoaClient = milkcocoa.Milkcocoa.connect("{your-app-id}");
datastore = milkcocoaClient.datastore("python")
datastore.push({"content":"Hello"})
time.sleep(3)
実行してみます。
$ python sample.py
Traceback (most recent call last):
File "sample.py", line 6, in <module>
※途中省略※
self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)
が、上記のようなエラーが出てしまいます。
ca.certファイルあたりが怪しい気がするのですが、
ひとまず、SSLでの通信をあきらめることにします。
sample2.py
import sys
import time
import milkcocoa.milkcocoa as milkcocoa
milkcocoaClient = milkcocoa.Milkcocoa.connect("{your-app-id}", useSSL=False);
datastore = milkcocoaClient.datastore("python")
datastore.push({"content":"Hello"})
time.sleep(3)
以下のように実行した後に、
Milkcocoaのdashboardから確認するとpushしたValueが登録されていることが確認出来ます。
$ python sample2.py
SSLの件は、気持ち悪いのでわかったら更新しておきますが。
これでPythonからもMilkcocoaのデータストアにアクセスすることが出来ます。
これで、IoTデバイスから収集したデータを、
Jupyterで可視化してみたり、機械学習に使ってみたりと。
Pythonが得意な分野での、活用が広がるのではないかと思います。