Github

【python】Mac OSX anaconda&Lasagne環境構築時メモ

最近ちらほら見かけるDeepLearning用ライブラリのLasagne
ちょっと調べると導入に苦労しているような記事をちらほら見かけたので恐る恐る
導入してみたら意外とあっさり行けたのでメモ

導入環境は下記の通り
OS:mac OSX
anacondaで開発環境構築済み
(python3.4)
以下はcondaで構築した環境上での操作

①theanoの導入

※このコマンド、実行はしたが②の↑のコマンド打ったらpipで導入されたv0.8が消されてv0.7がインストールされたので
 多分不要。
②lasagneの導入

以上で完了。
はい、公式に書いてある方法そのまんまでいけました。

ちょっと遊んでみて記事化できそうなら別途記事にする予定。

2016/07/10追記
サンプルのminstコードを動かしてみたら動かなかった・・・
ただ、lasagne周りのエラーじゃなくてtheanoのエラーだったからもしかしてサンプルコードがミスってるのかも。
ちょっとthenoを本格的に調査してみるか・・・

Mac OSXへmatplotlib導入時メモ

OSXにmatplotlibを導入してみた、公式サイトの解説では

でいけるとの説明があったがエラー発生(下記参照)

REQUIRED DEPENDENCIES AND EXTENSIONSを参照する限りどうもFreetype入っていないため
エラーとなっている模様。
そこでbrewを導入

導入は問題なく完了、再度pipにてmatplotlibを導入しようとしてみても同様のエラー
freetypeインストールされてるのにno(認識されていない)とはどういう事かと思い調べてみると
どうもMacOSXはもう一個追加してあげないとダメな模様

pkg-config導入後に再度pipからmatplotlibインストールをためしてみると今度は成功。

途中諦めそうになったぜ・・・

Python3とPyQT5でGUIアプリ作成 ~処理作成編~

だいぶ前回投稿から間が開いたがPyPT5のGUIアプリの処理を作成する。

今回はサンプルとしてボタンを押すと新規ウィンドウを立ち上げるアプリを作成してみる。

まずはQtCreatorで作成したファイルをコンパイルする。
※パスの命名がウンコですが気にしないで下しあ

コンパイル後のファイルを確認してみる
-mainwindow-

-newwindow-

生成されたコードを確認するとクラス名がQTCreatorで指定した名前にUi_が追加された形で
生成されている事がわかる。
また、今回はQtウィジェットアプリケーションをテンプレートに指定し、PushButtonをQtCreator
で配置している。そのため、Ui_MainWindowにpushButtonという名前のQPushButtonインスタンスが作成される。

PyQtはQtのラッパー関数となっているため、当然ながらQtのリファレンスにある関数は基本的に使用する事ができる。

以下、サンプルコード(長いので省略、見るときはクリック)

PyQtを使う際のポイントとしては、PyQtのリファレンスを見るのではなくて
Qtのリファレンスを確認する事。
基本的にPyQtはQtのラッパーなのでQtでできる事はだいたい出来るハズ。

また、今回新しいWindowを作成するトリガーとして使用したQPushButtonの関数
clickedはQtでシグナルと呼ばれている物となっている。
このシグナルは、各種操作系の関数clicked,pressed,toggled等に実装されており
connect関数を使って操作を検知する事ができる。

詳しいことは気が向いたら説明するかもしれませんが、今回はあくまで処理作成編なのでパス。
説明ページもあって需要なさそうやし

以上の3ファイルを同一フォルダに配置し、__init__.pyを実行することでGUIアプリケーションが起動します。

調査方法がわからないとどこ見たらいいのかさっぱりわからんので非常に面倒だが、いざわかってみると
いろいろ整備されてるお陰で結構いろんな物に応用が聞くようになるので、作る際にはQtリファレンスみながら
頑張ってみてください。

※今回のコードはgithubにおいて置く予定。

Python3とPyQT5でGUIアプリ作成 ~GUI画面作成編~

QtCreatorでのGUI画面作成

Qtをインストールすると自動的に入る”QtCreator”というアプリで
GUIを使って画面を作成することができる。
※昔はQtDesignerって名前でした

まずはじめに他のIDE同様にプロジェクトを作成する必要がある。プロジェクト作成画面

いろいろプロジェクトのタイプがありますが、今回はWtウィジェットアプリケーションを選択。
その後キットの選択、プロジェクトパス等の設定を行う(全部そのままOKを押し続けるだけでOK)とプロジェクトが作成される。
プロジェクト作成直後

プロジェクトが作成されるとヘッダーファイル(.hファイル)
メインプログラム(.cppファイル)、フォーム(.ui)が作成される。

GUI画面の作成はフォームを編集する事になる。また、PyQTを使う際にはこの
フォームファイルを.pyファイルに変換して使うことになり、その他のファイルは今回使用しない。

フォーム編集画面に行くためには、編集するファイルを選択する事で行ける。
編集画面にいくと各種ボタン、表などがパーツごとに表示されており、これらを
ドラッグアンドドロップで貼り付けていくことができる。
ui編集画面

編集が終わったら、uiファイルをpyファイルに変換する必要がある。
これは、PyQtで自動に導入されるpyuicを使用する。
(macユーザはパスを通してあげる必要あり,デフォルトパスは
多分コレ⇛/Library/Frameworks/Python.framework/Versions/3.4/bin)

pyuic ファイル名 -o 出力ファイル名
で変換することができる。今回の例だと
pyuic mainwindow.ui -o mainwindow.py
として変換する事になる。
これでPythonでQtを使う準備が完成。

次回は実際に処理を書いてみる

Python3とPyQT5でGUIアプリ作成 ~導入編~

前回に引き続きPyQt

Pythonの導入に関してはカット(公式サイトからインストールするだけなので)

Qtの導入—————————————————————————————————————
公式サイトのDownloadページから”Community”エディションを選択してDL
QtDownload
インストールはインストーラで行われるので適当にOKを押していれば導入完了
【よだん】

今回の記事かいてて気づいたけど前回の投稿でライセンスがLGPLじゃないからPyQtはうんぬんとか書いてたけど、実はQtも商用に使うと別ライセンスになるっぽい?

ライセンスはそのうち勉強したほうがよさそう・・・

——————————————————————————————————————————

PyQtの導入
こちらも基本的には公式サイトからDLしてくる。
PyQtは前提としてSIPというモジュールが必要になるので、先にそちらから実行。

SIPの導入
1.公式サイトからSIPをダウンロード
pyQtDownload
2.ダウンロードしたファイルを解凍し、configure.pyを実行
※注意※
Linuxライクなシステムでconfigure.pyの実行をなにも考えずに”python configure.py”と実行すると当然ながらパスが通っているpythonが実行される事になる。
得にmacユーザはデフォルトでpython2.7がプリインストールされているので、python3を使ってPyQtを使おうとするとまずここで躓く。
macはシステムでpythonを使っている様なので、Python2.7を削除とか力技はやめたほうが無難。
おとなしく”python3 configure.py”のような形で実行しておく。

PyQtの導入
これも基本的にはSIPと同じ流れなので割愛。
上記の公式ページから使うVersionのPyQtをダウンロードしてきて解凍してconfigure実行
pyQtDownload

次回からはPyQtの基本的な使い方の解説をしようかと思ってます

Python3とPyQT5でGUIアプリ作成

QTDesigner
Pythonの修行兼実用のために自分用家計簿アプリを開発してみた。
とりあえずプロトタイプが完成したので記事化。

【使ったもの】
・Python3.4
・Qt5
・PyQt5

【QtとPyQtに関して】
 C++のGUIフレームワーク、詳しく説明してるサイトは腐るほどあるので割愛。
 QtDesignerというGUIでのGUI制作ツールがある。コレが使いたいがために今回は
 これを採用。
 このQtをPythonで使用するためのフレームワークがPyQtじつはコレ以外にもPySideという
 フレームワークがある。できる事はそんなに変わりない様だがライセンスが微妙に違う。
 ※PyQtはプロプライエタリ・ソフトウェア+Fee
  PySideはLGPL
 今回は完全に私用で作成する上に多分そのうち改造し続けて作りなおす事を見据えてなんとなく
 PyQtを採用。

次回更新はPyQtの導入&使い方の予定。

【Python,Mysql】この前体験したエンコード地獄

すごい久々の更新。

この前会社のイントラサイトを手直しする機会があり、5年以上放置されていたサーバー
とWebサイトを触り、イントラサイトを構築し直すという名誉あるお仕事をしてました。

しかしこのサイトが放置されているだけあって中身がぐちゃぐちゃで何が何だか分からない上に
サーバーの設置場所まで行方不明になっている始末。

こうなったらもう好きにやるしかないと決意した俺はイントラサイトの構築にPythonを使うことを決意。
同僚その他もろもろの反対を押し切りPythonを使用することに成功しました^q^;;
(使ったのは結局csvからクエリを作成する処理だけだったが・・・)

しかしこの決断がまずかった。
読み込むデータが日本語&HTMLのタグという素敵な組み合わせ、ええPythonが苦手な日本語処理です。
そんなことでエンコード地獄の門が開いてしまいました。

データ読み込みで文字化け、データ処理で文字化け、データ書き込みに文字化け、(ry
と随所に文字化けが多発。俺のストレスがマッハ。

最終的なエンコードの変更のフローはこんな感じ
Excelからcsvデータ取り出し(この時点ではsjis)⇛csvデータをpythonで読み取り
⇛文字列操作のためにUnicode文字列に明示的に変換
⇛クエリ化した後にエスケープ文字列をエスケープしつつujisへエンコード変換(Sqlサーバーがujisエンコードだったため)
⇛WebページからPHPでDBへ接続、データを取得(この際WebページエンコーディングはUTF-8のため変換をかける)

書いてて自分でもアホらしくなってきましたが、実はこれサーバーの初期構築段階の影響をモロかぶりした結果、
サーバー設定に手を入れずに対応するとかいう素敵な制約があったおかげだったり。

まぁおかげさまでエンコードには多少の体制がついてよかったとおもう(棒
しかしどっかの記事で前みたけどマジでエンコードはやばいな・・・