プログラミング」カテゴリーアーカイブ

Raspberry Pi3にPyenvをいれてみた。環境構築メモ

ハード:Raspberry Pi3
OS:Raspbian Jessie
SSH接続して使う環境下での記録です。

pyenvについて

複数のバージョンが異なるPythonを一か所に共存させて切り替えて使用させることができる。
システム添えつけのPython環境をいじらないのでシステムファイルをいじりたくない場合に便利。
Python環境とライブラリをセットにして自分の開発環境を組んでおける。

githubに詳しい説明がありますのでこちらを読んでください。

自分の場合はPythonそのもののアップデートやライブラリの無尽蔵なインストールとアンインストール
などでシステム添えつけの環境を破壊してしまったら怖いのでpyenvを使ってみることにした。

通常の場合だとRaspbianのPython環境は以下の場所に収められている。

/usr/bin

自分の場合はPython2.7と3.4が入っていた。

pyenvを使うと、次のような配置で新しい専用の場所を確保し、Python環境を構築するようになる。
なんかへまをやっても/.pyenv以下をrmしてしまえばいいので大丈夫…なはず。

/home/pi/.pyenv

Raspberry Pi3に入れる手順

※Macユーザーの場合はhomebrewを使うことでインストールができるけどRaspbianはLinuxbrewを使ってもインストールできない。

インストールにあたり参考にさせていただいたサイトはこちらです。たくのこ Web Ubuntuにpyenvを用いてpythn環境を構築しました。

パッケージのインストール

sudo apt-get install git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev

.pyenvを作成してそこにpyenvをクローンする。

git clone git://github.com/yyuu/pyenv.git ~/.pyenv

.bashrcにパスを設定してpyenvを使えるようにする。

まずは.bashrcを見付けよう。ということで/home/piに移動する。
次に以下のコマンドでフォルダの中身を表示する。

ls -a

オプションで-aをつけることで普段は見れないファイルやフォルダを見れるようになる。
せっかくなのでこの時にちゃんと/home/piの内部に.pyenvが作られているか確認しておこう。
続いて.bashrcを設定するべくエディタで開く。vim以外のほかの何でもよい。

sudo vim .bashrc

.bashrcはbashの環境設定が記述されている。
ファイルブラウズする際の色分けに関する設定や環境変数などを収めてある。
末尾に以下の設定を記載する。

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

.bashrcの変更を保存したら。

source .bashrc

のコマンドをたたいて変更を有効にする。

Pyenvの利用

まずは、いままでの導入作業が報われているか確かめよう。

pyenv

とコマンドをターミナルでたたけばちゃんと動くはずだ。

PyenvにPythonを入れてみる。

そのままの状態ではpyenvの環境は空っぽなのでお好みのpython環境をインストールしてやる必要がある。

pyenv install --list

pyenvでインストールすることができるpythonのバージョンを一覧で見ることができる。
また、パッケージ管理ソフトもあるので好きな組み合わせを使うことができる。

pyenv install 2.7.12

僕の場合はこんな感じで2.7.12をチョイスしてみた。※miniconda-latestも試しに入れてみた。
インストールには結構時間がかかる。20分くらいかかっただろうか。その間はほかのことをして待っておいたほうが良い。
なおanacondaやminicondaなどはnumpyなどの外部のライブラリが一緒に備わっている状態のパッケージであるが、
Raspberry piでは利用できない場合があるので注意が必要。
次にpyenvに正しくインストールされたか確認するために以下のコマンドで導入された環境を確認する。

pyenv versions

するとこんな感じで一覧がでるはず。

*system (set by /home/pi/.pyenv/version)
  2.7.12
  miniconda-latest

*がついているのは現在指定されているpython環境を表している。
試しにここでターミナルからpythonをたたいてみよう。すると自分の場合はpython2.7.9が立ち上がった。
この場合だとRaspbianに添えつけて備わっている環境が動いているようだ。
そこでpyenvの2.7.12を使うべく切り替えのコマンドをたたく。

pyenv global 2.7.12

この後にまたpyenv versionsをたたいてみると2.7.12に*マークがつくはずだ。
この状態でpythonをたたいてやれば2.7.12が呼び出される。

あとは好きなようにパッケージのインストールをしたりプログラムを作ればよい。
ということでほかに気付いたことがあったら随時追記していきます。

参考リンク

たくのこ Web Ubuntuにpyenvを用いてpythn環境を構築しました。
https://github.com/yyuu/pyenv
http://www.itmedia.co.jp/help/tips/linux/l0284.html


Raspberry pi3にRaspbian jessieをインストールする。

夏休みだ!自由研究だ!
ということでメイカーフェア東京2016の物販でゲットしたRaspberry pi3のセットを使うことにした。
HDMIケーブルとLANケーブルとMicroUSBケーブルと2.5A出力のACアダプタと32GBの得体
の知れないブランドのマイクロSDカードにRPi本体とケースがついて8,500円でゲット!!

今回はRaspberry pi3を使うためにやった初期設定についての備忘録を残します。
これまでに自分が記録してきたRaspberry pi2とはちょっと作業内容が異なるので
結構手こずった部分がありました。
これは私の夏休みの宿題ノートです。

今回の目標

Raspberry pi3にキーボードとモニタを接続せずにjessieを導入し、Wifi設定とSSH接続の設定を行う

使う物

  1. Macbook air
  2. Lanケーブル
  3. Lan-USBアダプタ
  4. Raspberry pi 3
  5. MicroSDカード
  6. microUSBケーブル
  7. ACアダプタ

前提条件(OS)

  1. Macbook…MacOS X El Capitan 10.11.5(15F34)
  2. Raspberry pi3…Rapbian jessie 2016.05.31DLはこちらから

作業手順概要

  1. RaspbianをSDカードへの焼き込む
  2. Raspberry pi3とMacbookをLANケーブルで接続して起動する
  3. Raspberry pi3へのWifi設定とSSH設定

1. RaspbianをSDカードへの焼き込む

以前書いたこちらの手順を参照する。
RaspbianをSDカードに焼き込む(備忘録)

公式サイトのDLはクソ遅いので日本国内のJAISTのMirror serverを使うと良い。
Rapbian一覧

2. Raspberry pi3とMacbookをLANケーブルで接続して起動する

まずは焼き込んだSDカードをRaspberry pi3のカードスロットに入れる。
次にMacbook airとRaspberry pi3をLANケーブルとLAN-USBアダプタで接続する。
そして、ACアダプタにさしてMicroUSBケーブルをRaspberry pi3につないでやり起動させる。

Raspberry piをMacbookから操作するためにはSSH接続をしなければいけない。
SSH接続するためには、Raspberry pi側のIPアドレスを知る必要がある。
これは次のようにして行う。

Mac側のターミナルを開き、次のコマンドを打つ。

    $ grep OFFER /var/log/system.log

すると次のような結果が返ってくる。

    Aug 14 01:25:47 あなたのパソコンの名前 bootpd[2015]: OFFER sent <no hostname> 192.168.2.6 pktsize 300

このことからRaspberry pi側のデフォルト状態のipアドレスがわかる。僕の場合は
192.168.2.6だとわかった。

ということで、SSH接続する。

    $ ssh pi@192.168.2.6

すでに何度かSDカードの書き込みをやったりRaspberry piを起動している場合には、こんな感じでエラーがでてくる場合もある。

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that a host key has just been changed.

そういうときには

    $ ssh-keygen -R 192.168.2.6

このようにしてSSHの公開鍵を再度生成してやってから再度接続する。

接続がうまくいった際は、パスワードの入力が求められるのでraspberryと入力してログイン。

ログインできたら早速vimをインストールしてしまう。※この時点では、Macbook側のターミナルからRaspberry pi側のターミナを開いている状態となっている。

    $ sudo apt-get install vim

DLとパッケージの展開で少し時間がかかるけど我慢。
つづいて初期設定を行う。これはRaspi-configを使う。

    $ sudo raspi-config

すると設定一覧の画面がでてくる。※Raspbianのヴァージョンによって画面が異なる場合がある。
自分がやった設定はこんな感じ。

  1. ファイルシステムの拡張 とりあえずやっておく
  2. パスワード変更 とりあえずやっとく
  3. Boot Options Consoleモードで起動…デスクトップ画面に行かずにパスワードを求める方式
  4. 選択→timezoneの設定
  5. 詳細な設定 sshの設定、Audio設定…オーディオ出力先の設定

設定をfinishすると再起動する。

3. Raspberry pi3へのWifi設定とSSH設定

先ほどと同様にRaspberry piにLANケーブル経由でSSH接続する。

WiFi設定をする。

以前に書いたこちらをもとに設定を行えば大丈夫
Raspberry piを家のWifiに接続する

SSH接続の設定をする。

こちらに別途手順をまとめておきました。
Raspberry pi 3にWiFi経由でSSH接続する

ひとまずは設定完了。

文字入力環境の整備とかプログラミング言語環境とかupdateとかupgradeはまだやってないけど無線化してSSH接続できるようにしておけば
LANケーブルでつないだ場合のような制約から解放されるので大丈夫。
この先はからあげさんが書いているチュートリアルを参考にしていただければ、
無限の可能性をRaspberry piに与えることができるようになります。

Raspberry Pi 3でRaspbian Jessieをセットアップする方法
とくに日本語環境セットアップの部分から追っていくと必要なものをすべてインストールできてしまうのでお勧めです。


Windows10でPython環境を入れてみる。メモ書き

夏のボーナスで買ったサフプロで何かプログラミングをしてみたくなったのでPythonを入れてみることにした。
まずはPythonの実行環境を整えるまでの記録を備忘録として残す。

前提条件

  • 使用したのはSurface pro4
  • OSはWindows 10 Pro
  • バージョン1511
  • ビルド10586.498

Python.orgからptyhonをDL

Python2.7と3.5の二つでインストーラがついたものをDLしてくる

Python3.5.2のDLはこちらhttps://www.python.org/downloads/release/python-352/
僕のは64bitマシンなのでWindows x86-64 executable installerをDLしてみた。

次にPython2.7.12をDLしたhttps://www.python.org/downloads/release/python-2712/
Windows x86-64 MSI installerをDLしてみた。

Pythonをインストールを行うときの手順。

こちらのブログを参考にさせていただきました。
エコな毎日/Windows10でPythonの開発環境を構築する。
インストーラで導入する際のフォルダ構成や設定などの項目はこちらに従う。

自分が参考にしたのは、

VSを終了し、最新のPythonを導入します。

この状態で、コンソール上でPythonを起動した場合、Python3.5-64bitが起動するようになります

この二文の間のところです。

コマンドプロンプトからPythonを使えるようにするための設定

インストールが完了したら、次にコマンドプロンプトからPythonを実行できるようにするためにパスを通す設定をする。設定方法は、
Pythonのdocumentにあるこちらのページに書いてるこちらの解説に従う。http://docs.python.jp/3/using/windows.html
設定方法が書いてある場所は、3.3.1. 補足: 環境変数の設定コマンドプロンプトを開いて以下のコマンドを入力して実行する。

    C:\>set PATH=C:\Program Files\Python 3.5;%PATH%
    C:\>set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
    C:\>python

三回目のpythonでをたたいたときにPythonのインタプリタが起動すれば設定は成功である。

    Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.

※Python2.7系統を使いたい場合は、pyとコマンドでたたいてあげればよい。

この先どうしようか?

とりあえず開発環境を入れられたけどこの先何を作るかとかのプランが全然ないのと、
パッケージツールも導入していないので何か課題を見つけたら追って更新していきます。

追記2016年7月18日23:35

pipを使ってライブラリのパッケージをインストールしようとした、ところエラーが出てきた。

Exception:
Traceback (most recent call last):
  File "C:\Program Files\Python35\lib\shutil.py", line 538, in move
    os.rename(src, real_dst)
PermissionError: [WinError 5] アクセスが拒否されました。

これを防ぐためには、コマンドプロンプトを呼び出すときに、右クリックで管理者として実行をクリックしてから実行すればよい。
C:\windows\system32>
そうするとこんな感じで表示されるはず。


さくらのレンタルサーバーをTwitter botにしてみたよ

やったこと

さくらのレンタルサーバー(スタンダードプラン)で自分が書いたPythonのプログラムを用意し、決まった時間に実行することでつぶやくTwitterbotをつくってみました。

ちなみに、自分のTwitter用のPythonプログラムが無いよっていう方はこちらを見てもらうといいかも。簡単につぶやけます。デベロッパー登録についてとかもメモ書きしてあります。http://frontier-of-curiosity.org/wordpress/2015/08/29/twythonで遊ぼう%E3%80%80その1/

 

ここからはターミナルを使ってサーバーにSSH接続して作業します。

Twythonをサーバーにインストールする。

サーバー上でPythonを実行する環境は整っているんですが、外部のライブラリを使うための準備が必要となります。ということでPythonように便利なTwitterライブラリのTwythonの力を借ります。手持ちのパソコンだとeasy_installですぐインストールできてしまうのですがレンタルサーバーだと勝手が違うようです。ということで頼れるサイトはこちらです。

http://emptypage.jp/notes/sakura-python.html

1 ライブラリ用のディレクトリを作成する

最初にターミナルから下記のように自分のローカル環境用にライブラリを置く場所を用意してあげます。ターミナルから以下のコマンドを叩きます。

mkdir -p ~/.local/lib/python2.7

することこんな感じになります。

/home/自分のオリジナルドメイン/.local/lib/python2.7/site-packages/(※このディレクトリにライブラリのパッケージがいろいろインストールされる。)

 

2 easy_installのための設定ファイルを用意

.pydistutils.cfg という名前をホームディレクトリに用意することでeasy_installにどこにライブラリをインストールすればいいかを教えてあげます。これはviかemacsで作ってあげれば大丈夫です。

[install]
user=1

 

3twythonをインストールする。

さくらのレンタルサーバーではsudoが使えないみたいなので以下のようにしてインストールします。面倒なことはすべてパッケージ管理ソフトがやってくれます。

easy_install twython

 

インストールがうまくいけば、ターミナルからの作業は終了です。

 

ここから先は、さくらのコントロールパネルでの作業です。

サーバーにCRONの設定を教えてあげる。

http://shantiworks.info/2012/07/15/さくらインターネットレンタルサーバでcron設定を/

1自分の作ったプログラムのディレクトリを控える。

/home/自分のドメイン/~自分のプログラムが置いてある場所

 

2レンタルサーバーのコントロールパネルにアクセスしてCRON設定を開く

実行コマンドのところにパスをいれます。自分の場合はpythonなので以下のようになりました。

cd /home/自分のドメイン/~自分のプログラムが置いてある場所 ; /usr/local/bin/python 自分のプログラム.py

 

3実行の時間を指定してやる

CRON設定は日時やタイマーを細かく設定できるのでbotを発動したい時間とかを設定してあげればいいと思います。

 

 

僕は、Yahoo.comから天気予報を使って毎朝つぶやくbotを作りました。毎朝Twitterのチェックと天気のチェックが両方できてしまうので結構重宝しています。

アイデア次第でいろいろな用途がものができると思いますのでさくらのレンタルサーバーやっている皆さんも是非試してみてください!


Twythonで遊ぼう その2

前回の投稿に引き続き今度はTwythonのDocumentを見ながら検索してみたり、タイムラインの情報を取得してみようと思います。

導入編のTwythonで遊ぼう その1はこちら

そしてTwythonからTwitterのApiをいじいじする練習をしてみます。

TwythonのDocumentationはこちらにあります。

https://twython.readthedocs.org/en/latest/api.html#core-interface

 

1 search(**params)をやってみる。

ということで検索のAPIをやってみたいと思います。

TwythonのDocumentationをクリックするとTwitterのAPIのページに飛びます。search(**params)のから飛ぶのはこちら

リンク先で確認するべきはPrametersの項目です。

例えば、qを見るとrequiredと書かれています。これはAPIを使うときに必ず必要になるよ。という意味です。Example Valuesを見るとどうやら検索したい単語を入れるみたいです。

今回は、countの項目も使ってみようと思います。これは検索して返って来る結果の個数を指定できます。デフォルトの場合は15個まで結果を返してくれます。

というわけでTwythonのexampleを書き換えてみましょう。

こちらがオリジナル。

from twython import Twython, TwythonError

# Requires Authentication as of Twitter API v1.1
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
try:
    search_results = twitter.search(q='WebsDotCom', count=50)
except TwythonError as e:
    print e

for tweet in search_results['statuses']:
    print 'Tweet from @%s Date: %s' % (tweet['user']['screen_nam\
                                       e'].encode('utf-8'),
                                       tweet['created_at'])
    print tweet['text'].encode('utf-8'), '\n'

自分が勉強用に書き換えたのはこちら。

#coding: UTF-8
from twython import Twython, TwythonError

# Requires Authentication as of Twitter API v1.1

APP_KEY=''
APP_SECRET=' '
OAUTH_TOKEN=''
OAUTH_TOKEN_SECRET=''

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
try:
    search_results = twitter.search(q='ドラゲナイ', count=100)
except TwythonError as e:
    print e

statuses_list = search_results['statuses']

for num in range(0, len(statuses_list)):
    text_in_tweet = statuses_list[num]
    print text_in_tweet['text']

qのところに自分の調べたい単語を入れて実行するといろいろと楽しめるんじゃないかとおもいますので是非試してみてください。

 

2 get_home_timeline(**params)をやってみる。

さてAPIいじりの練習をもう一度やってみましょう。今度は自分のタイムラインを表示してみましょう。コメントには私のメモ書きが入っています。

#coding: UTF-8
from twython import Twython, TwythonError
import json

APP_KEY=''
APP_SECRET=''
OAUTH_TOKEN=''
OAUTH_TOKEN_SECRET=''

twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

try:
    #自分の画面に表示されるタイムラインを取得する。
    #countには取得するTweetの上限数を決めることができる。パラメータ設定しない場合は、デフォルトで20個が返ってくる。
    #最大で指定できるのは200まで
    #返ってくるリストを格納
    user_timeline = twitter.get_home_timeline(count = 200, exclude_replies = 'true')
except TwythonError as e:
    print e

#取得してきたツイートの数をカウントする。
print len(user_timeline)

#帰ってきたリストの最初から最後までの数を発生させる。
for num in range(0, len(user_timeline)):
    #リストの中から一つずつ要素を取り出す。
    text_of_tweet = user_timeline[num]
    #要素からテキストの部分を取り出して表示する。
    print text_of_tweet['text']

 

3 まとめ

Twythonの扱い方としては、まずDocumentationで自分の扱ってみたい関数を調べて、twitterのAPIに飛びます。

そして、使いたい関数が必要とするParametersを調べて適切なvalueを与えてやることで自分の必要とする結果を得ることができます。


Twythonで遊ぼう その1

Raspberry Piをふとしたきっかけで手に入れたのでTwitterのBotを作ってみたいと思い、調べてみたところTwythonというPtython用のライブラリがあることを知り、試験的に自分のノートPCを実験台として使ってみました。

1、やること
Twythonライブラリを導入してPythonからTwitterを操作してみる。

2、前提条件(環境)
パソコンにPythonの環境があること。
PythonでHello worldができる。
Twitterアカウントを持っていること。

僕のPCの場合ではこんな感じです。
・OS X Yosemite 10.10.4
・Python 2.7.9

3、準備
・デベロッパー登録とアプリケーションの登録
自分の作ったプログラムからTwitterをいじるためにはデベロッパー登録とアプリケーションの登録をおこなう必要がある。
登録をおこなうためのチュートリアルはこちらのページが最高にわかりやすい。
http://syncer.jp/twitter-api-create-application

アプリケーション登録をする際にはPermissionの設定を行う。このときに自分の作りたいものに合わせてRead onlyとRead and Writeのうちから必要なものを選ぶ。

今回は、TLへの書き込みに挑戦するのでRead and Writeを選ぶ。

アプリケーションを登録すると以下の4つが割り振られるのでこれらをメモする。

Consumer Key (API Key)
Consumer Secret (API Secret)
Access Token
Access Token Secret

・Twythonの導入
PythonからTwitterを扱えるようにするためにTwythonライブラリをインストールする。
ターミナルを開いてsudo easy_install twythonと打ち込む。インストールはパッケージ管理ソフトがやってくれる。
インストールがうまくいくとこんな感じでディレクトリが形成されるはずです。
/Library/Python/2.7/site-packages/twython-3.2.0-py2.7.egg

4、サンプルの実行
ということでサンプルを利用して、タイムラインに投稿しましょう!
https://github.com/ryanmcgrath/twython/tree/master/examples
そのためにgithubからexampleを落としてきます。

まずは、update_status.pyを実行してみましょう。
exampleはそのままだとこんな感じ。

from twython import Twython, TwythonError

# Requires Authentication as of Twitter API v1.1
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

try:
    twitter.update_status(status='See how easy this was?')
except TwythonError as e:
    print e

これを自分用に書き換えてみるとこんな感じ。

#↓日本語を扱えるようにするために追加
#coding: UTF-8

from twython import Twython, TwythonError
#自分の〜の中に3で控えた設定を入力する。
APP_KEY = "自分のConsumer Key (API Key)"
APP_SECRET = "自分のConsumer Secret (API Secret)"
OAUTH_TOKEN = "自分のAccess Token"
OAUTH_TOKEN_SECRET = "自分のAccess Token Secret"

# Requires Authentication as of Twitter API v1.1
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

try:
    twitter.update_status(status='こんにちはTwitter!')
except TwythonError as e:
    print e

この.pyをターミナルからじっこうしてやれば自分のTwitterアカウントが更新できるはず!!
みなさんは大丈夫でしたか?
ダメだった場合はエラーログが表示されるので適当にググってください。

次はAPIを観察しながらいろいろ遊んでみたいと思います。