Soumettre la recherche
Mettre en ligne
データ分析スクリプトのツール化入門 - PyConJP 2016
•
11 j'aime
•
8,135 vues
Akinori Kohno
Suivre
PyConJP2016トーク Pythonによるデータ分析スクリプトのEXE化・GUI付与
Lire moins
Lire la suite
Données & analyses
Signaler
Partager
Signaler
Partager
1 sur 77
Recommandé
公平性を保証したAI/機械学習 アルゴリズムの最新理論
公平性を保証したAI/機械学習 アルゴリズムの最新理論
Kazuto Fukuchi
Rによるベイジアンネットワーク入門
Rによるベイジアンネットワーク入門
Okamoto Laboratory, The University of Electro-Communications
アンサンブル木モデル解釈のためのモデル簡略化法
アンサンブル木モデル解釈のためのモデル簡略化法
Satoshi Hara
密度比推定による時系列データの異常検知
密度比推定による時系列データの異常検知
- Core Concept Technologies
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
takehikoihayashi
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知
Chika Inoshita
How to use in R model-agnostic data explanation with DALEX & iml
How to use in R model-agnostic data explanation with DALEX & iml
Satoshi Kato
Recommandé
公平性を保証したAI/機械学習 アルゴリズムの最新理論
公平性を保証したAI/機械学習 アルゴリズムの最新理論
Kazuto Fukuchi
Rによるベイジアンネットワーク入門
Rによるベイジアンネットワーク入門
Okamoto Laboratory, The University of Electro-Communications
アンサンブル木モデル解釈のためのモデル簡略化法
アンサンブル木モデル解釈のためのモデル簡略化法
Satoshi Hara
密度比推定による時系列データの異常検知
密度比推定による時系列データの異常検知
- Core Concept Technologies
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
takehikoihayashi
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
第8章 ガウス過程回帰による異常検知
第8章 ガウス過程回帰による異常検知
Chika Inoshita
How to use in R model-agnostic data explanation with DALEX & iml
How to use in R model-agnostic data explanation with DALEX & iml
Satoshi Kato
正準相関分析
正準相関分析
Akisato Kimura
機械学習モデルの判断根拠の説明
機械学習モデルの判断根拠の説明
Satoshi Hara
機械学習工学の進展と課題 2021
機械学習工学の進展と課題 2021
Fuyuki Ishikawa
幾何と機械学習: A Short Intro
幾何と機械学習: A Short Intro
Ichigaku Takigawa
Stanでガウス過程
Stanでガウス過程
Hiroshi Shimizu
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
Ryota Kamoshida
クラシックな機械学習の入門 11.評価方法
クラシックな機械学習の入門 11.評価方法
Hiroshi Nakagawa
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
hoxo_m
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
Deep Learning JP
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
Deep Learning JP
(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習
Ichigaku Takigawa
スパースモデリング入門
スパースモデリング入門
Hideo Terada
OpenOpt の線形計画で圧縮センシング
OpenOpt の線形計画で圧縮センシング
Toshihiro Kamishima
機械学習モデルの列挙
機械学習モデルの列挙
Satoshi Hara
クラスタリングとレコメンデーション資料
クラスタリングとレコメンデーション資料
洋資 堅田
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
Deep Learning JP
[DL輪読会]Deep Learning 第2章 線形代数
[DL輪読会]Deep Learning 第2章 線形代数
Deep Learning JP
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
ケンタ タナカ
アンサンブル学習
アンサンブル学習
Hidekazu Tanaka
Active Learning の基礎と最近の研究
Active Learning の基礎と最近の研究
Fumihiko Takahashi
研究・企業・生き方について 情報科学若手の会2011
研究・企業・生き方について 情報科学若手の会2011
Preferred Networks
2016tf study5
2016tf study5
Shin Asakawa
Contenu connexe
Tendances
正準相関分析
正準相関分析
Akisato Kimura
機械学習モデルの判断根拠の説明
機械学習モデルの判断根拠の説明
Satoshi Hara
機械学習工学の進展と課題 2021
機械学習工学の進展と課題 2021
Fuyuki Ishikawa
幾何と機械学習: A Short Intro
幾何と機械学習: A Short Intro
Ichigaku Takigawa
Stanでガウス過程
Stanでガウス過程
Hiroshi Shimizu
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
Ryota Kamoshida
クラシックな機械学習の入門 11.評価方法
クラシックな機械学習の入門 11.評価方法
Hiroshi Nakagawa
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
hoxo_m
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
Deep Learning JP
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
Deep Learning JP
(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習
Ichigaku Takigawa
スパースモデリング入門
スパースモデリング入門
Hideo Terada
OpenOpt の線形計画で圧縮センシング
OpenOpt の線形計画で圧縮センシング
Toshihiro Kamishima
機械学習モデルの列挙
機械学習モデルの列挙
Satoshi Hara
クラスタリングとレコメンデーション資料
クラスタリングとレコメンデーション資料
洋資 堅田
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
Deep Learning JP
[DL輪読会]Deep Learning 第2章 線形代数
[DL輪読会]Deep Learning 第2章 線形代数
Deep Learning JP
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
ケンタ タナカ
アンサンブル学習
アンサンブル学習
Hidekazu Tanaka
Active Learning の基礎と最近の研究
Active Learning の基礎と最近の研究
Fumihiko Takahashi
Tendances
(20)
正準相関分析
正準相関分析
機械学習モデルの判断根拠の説明
機械学習モデルの判断根拠の説明
機械学習工学の進展と課題 2021
機械学習工学の進展と課題 2021
幾何と機械学習: A Short Intro
幾何と機械学習: A Short Intro
Stanでガウス過程
Stanでガウス過程
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
クラシックな機械学習の入門 11.評価方法
クラシックな機械学習の入門 11.評価方法
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
[DL輪読会]Set Transformer: A Framework for Attention-based Permutation-Invariant...
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
【DL輪読会】AUTOGT: AUTOMATED GRAPH TRANSFORMER ARCHITECTURE SEARCH
(2018.3) 分子のグラフ表現と機械学習
(2018.3) 分子のグラフ表現と機械学習
スパースモデリング入門
スパースモデリング入門
OpenOpt の線形計画で圧縮センシング
OpenOpt の線形計画で圧縮センシング
機械学習モデルの列挙
機械学習モデルの列挙
クラスタリングとレコメンデーション資料
クラスタリングとレコメンデーション資料
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
[DL輪読会]Deep Learning 第2章 線形代数
[DL輪読会]Deep Learning 第2章 線形代数
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
最高の統計ソフトウェアはどれか? "What’s the Best Statistical Software? A Comparison of R, Py...
アンサンブル学習
アンサンブル学習
Active Learning の基礎と最近の研究
Active Learning の基礎と最近の研究
Similaire à データ分析スクリプトのツール化入門 - PyConJP 2016
研究・企業・生き方について 情報科学若手の会2011
研究・企業・生き方について 情報科学若手の会2011
Preferred Networks
2016tf study5
2016tf study5
Shin Asakawa
Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?
Tatsuya Shinozuka
PredictionIOのPython対応計画
PredictionIOのPython対応計画
Shinsuke Sugaya
20180824 DLLab推論ナイト_深層学習モデル推論ライブラリ「Menoh」の紹介/Python以外でDeepLearning
20180824 DLLab推論ナイト_深層学習モデル推論ライブラリ「Menoh」の紹介/Python以外でDeepLearning
Preferred Networks
Pythonでディープラーニングをはじめるための一歩目
Pythonでディープラーニングをはじめるための一歩目
Core Concept Technologies
本気でPythonで宛名書きした話
本気でPythonで宛名書きした話
Satoshi Yamada
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk
Katayanagi Nobuko
他人が書いたコードのリファレンスをSphinxで作る方法
他人が書いたコードのリファレンスをSphinxで作る方法
Takeshi Sugiyama
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
S06 t1 python学習奮闘記#4
S06 t1 python学習奮闘記#4
Takeshi Akutsu
あなただけにそっと教える弊社の分析事情 #data analyst meetup tokyo vol.1 LT
あなただけにそっと教える弊社の分析事情 #data analyst meetup tokyo vol.1 LT
Hiroaki Kudo
アラフォーでプログラミングをはじめて思ったこと
アラフォーでプログラミングをはじめて思ったこと
hide ogawa
Online python data_analysis19th_20200516
Online python data_analysis19th_20200516
博三 太田
20211019 rpa勉強会!「自動化ネタ・rpaネタ・itネタ」ライトニングトーク大会! vol.31
20211019 rpa勉強会!「自動化ネタ・rpaネタ・itネタ」ライトニングトーク大会! vol.31
TakutoIde
5年前の自分たちに伝えておきたいこと モニタリング
5年前の自分たちに伝えておきたいこと モニタリング
Motohiro Ueki
DMTC 最終プレゼン
DMTC 最終プレゼン
真悟 平山
RPAってツールですか?
RPAってツールですか?
YasuharuMori2
S10 t1 spc_by_nowfromnow
S10 t1 spc_by_nowfromnow
Takeshi Akutsu
S05 t4 wrapup
S05 t4 wrapup
Takeshi Akutsu
Similaire à データ分析スクリプトのツール化入門 - PyConJP 2016
(20)
研究・企業・生き方について 情報科学若手の会2011
研究・企業・生き方について 情報科学若手の会2011
2016tf study5
2016tf study5
Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?
PredictionIOのPython対応計画
PredictionIOのPython対応計画
20180824 DLLab推論ナイト_深層学習モデル推論ライブラリ「Menoh」の紹介/Python以外でDeepLearning
20180824 DLLab推論ナイト_深層学習モデル推論ライブラリ「Menoh」の紹介/Python以外でDeepLearning
Pythonでディープラーニングをはじめるための一歩目
Pythonでディープラーニングをはじめるための一歩目
本気でPythonで宛名書きした話
本気でPythonで宛名書きした話
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk
他人が書いたコードのリファレンスをSphinxで作る方法
他人が書いたコードのリファレンスをSphinxで作る方法
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
S06 t1 python学習奮闘記#4
S06 t1 python学習奮闘記#4
あなただけにそっと教える弊社の分析事情 #data analyst meetup tokyo vol.1 LT
あなただけにそっと教える弊社の分析事情 #data analyst meetup tokyo vol.1 LT
アラフォーでプログラミングをはじめて思ったこと
アラフォーでプログラミングをはじめて思ったこと
Online python data_analysis19th_20200516
Online python data_analysis19th_20200516
20211019 rpa勉強会!「自動化ネタ・rpaネタ・itネタ」ライトニングトーク大会! vol.31
20211019 rpa勉強会!「自動化ネタ・rpaネタ・itネタ」ライトニングトーク大会! vol.31
5年前の自分たちに伝えておきたいこと モニタリング
5年前の自分たちに伝えておきたいこと モニタリング
DMTC 最終プレゼン
DMTC 最終プレゼン
RPAってツールですか?
RPAってツールですか?
S10 t1 spc_by_nowfromnow
S10 t1 spc_by_nowfromnow
S05 t4 wrapup
S05 t4 wrapup
データ分析スクリプトのツール化入門 - PyConJP 2016
1.
データ分析スクリプトの ツール化入門 PyConJP 2016 どんあき @dondokono
2.
自己紹介 なまえ :どんあき @dondokono 何してる人 :金融機関でリスク管理 デリバティブ関連のデータ分析 バックグラウンド:素粒子理論やってました プログラミング得意じゃないです… Python歴
:1年とちょっと 社内で布教中 1 息子 可愛いです笑
3.
本発表の内容は 個人の見解であり、 所属する組織・団体の 公式見解ではありません また登場する人物は(ry 2
4.
はじめに… 3 この分析業務効率化できそうだな せっかくなのでPythonで書いてみよう (豊富なパッケージですぐ作れるし)
5.
4 こんなの作ってみたけど どう? え?もうできたんですか!! でもこれどうやって 動くんですか? 私 同僚など
6.
5 えっと、、、 Pythonをインストールして… Python入ってませんよ 入れるの社内的に 結構面倒で… 私 同僚など
7.
_人人人人人人人人_ > 入れるの面倒 <  ̄Y^Y^Y^Y^Y^Y^Y ̄ 6
8.
7 そのあと コマンドラインから実行… コマンドライン…? あの黒い画面ですか? なにそれ怖い! 私 同僚など
9.
あの黒い画面 8
10.
_人人人人人人人人_ > なにそれ怖い <  ̄Y^Y^Y^Y^Y^Y^Y ̄ 9
11.
10 お堅い社内で Python布教するなんて アカンかったんや…
12.
その悩み(だいたい)解決できます! 11
13.
本日の流れ ・Pythonがインストールされてない環境で動かす Pyinstallerを主に使用します ・コマンドラインでなくGUI上から動かす PySide, QtDesignerを主に使用します 12
14.
注意点 (どの場合でも共通ですが) 各パッケージのバージョン情報に注意 ネット上の情報も古いものが多く、 記事や質問の日時をよく見ながら確認しましょう 13
15.
Pythonが無い環境で動かす...? Windowsの場合、EXEにしちゃいます = フリージング こんな感じ Pythonインストールしてない環境でも Pythonで書いたものが動く! 14
16.
Pyinstallerについて 15 • 最近でも頻繁にメンテされているフリージングパッケージ • Github:
https://github.com/pyinstaller/pyinstaller • Python 2.7, 3.3-3.5まで対応 • Windows, Mac OSでも使用可能 フリージングしたプラットフォーム上でのみ動作 • メジャーなパッケージはバンドル Libraries like PyQt5, PyQt4, PySide, wxPython, matplotlib or Django are fully supported (公式より引用) pandas, scipy, scikit-learn, seabornなども動作 • Stackoverflowなどでの情報が多い ←これ重要
17.
他のPythonのフリージング関連パッケージ • Py2exe (2.7,
3.4) https://pypi.python.org/pypi/py2exe 元々Python2系で有名だったもの、軽量・高速 2014-10-21以降更新もなく辛い エラーでまくる • cx_freeze (2.7, 3.4) http://cx-freeze.readthedocs.io/en/latest/index.html 2014-12-26が最後のアップデート setup関連のscriptは頑張って書く必要がある印象 16
18.
というわけで Pyinstallerが オススメです 17
19.
欠点もあります… • ファイルサイズがでかい… Importするパッケージを全部取り込む • 起動が遅い… EXE実行後、解凍処理が内部で走る importが多いと数十秒立ち上がるまでにかかることも… 18
20.
インストール前準備 今回は下記環境での動作確認を行っています Windows 10 64bit Anaconda
4.1.1 (64bit) condaで仮想的な作業環境を構築することを推奨します あとnumpyとかscipy入れるの面倒 PySideの都合で3.4ですが3.5でもいけます… Mac OSでもフリージングしてアプリにすることもできます 本発表では説明しません (発表者Macなくせに) 19
21.
インストール時の諸注意(Windows) 環境が汚くなる可能性があるのでcondaで別環境構築推奨 Anaconda利用時のsetuptoolsのバージョンに注意 19.2にダウングレード > conda install
setuptools==19.2 ここではpipでなくcondaでやることがポイント レジストリ書換え要求が出ることがありますがスルーしても使えます 20
22.
インストール時の諸注意(pyenv) Mac OS, Linux系でpyenvを使用されている場合 次でinstallしましょう https://github.com/pyinstaller/pyinstaller/wiki/FAQ >
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.5.X 21
23.
Hello World! Helloと返してくるだけのスクリプト まずはこれをフリーズ! 22 hello.py
24.
フリーズ3分クッキング スクリプトを用意して以下のコマンドでチーン > pyinstaller hello.py
--onefile 23 ここに完成品
25.
ほら、簡単でしょう 24
26.
補足 • 気長に固まるのを待ちます • import量によるけど数分から10分程 •
exeが出来てても実行するとエラーが出たり… 根気よくエラー潰しが必要なパッケージも 25
27.
便利なオプション --onefile 単一のexeファイルになるようにまとめてくれる かさばらないけど、デカイ --noconsole コマンドプロンプトがデフォルトで表示されなくなる 黒い画面恐怖症の人向けにも安心 --clean 前回のフリーズ関連ファイルがある場合はこちらを使用 もしくは手でdist, buildファイルを消しておきましょう 26
28.
欠点:デカイ 27 • 先ほどのhelloスクリプト • パッケージ追加時 import
pandasだけ追記した場合 で、デカイ なので手放しで使いまくれるわけでもなく…
29.
閑話休題 28
30.
せっかくなので流行り物を試したい! よっしゃ! TheanoとPymc3をフリージングできれば Deep Learning でもMCMCでも やりたい放題や!! 29
31.
今回の調査で我々は… 30 何の成果も 得られませんでしたぁぁ!!
32.
コンパイルを必要とするパッケージは鬼門… 31 誰か出来たら教えてください…
33.
32 入門レベルらしく Scikit-learn使います! それでも幾つかハマるポイントが…
34.
データ分析スクリプト 33 http://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_assumptions.html#example- cluster-plot-kmeans-assumptions-py k-meansのクラスタリングを行う例 • パラメータ:k • 2次元のインプットCSV を引数に取るスクリプト sklearn_example.py
35.
こんな感じの結果が出ます 34 • 黒い画面から実行 • cluster数
= 3の場合の例 色で3種類に区分けされた右図が出る
36.
それではフリーズ実行! 35 こちらも同様に > pyinstaller sklearn_example.py
--onefile で…
37.
完成!?…のはずが • EXEを実行してみると幾つかエラー • typedefsモジュールが見つからない scikit-learnのclusters/neighbors/typedefs.pydのことを指してるらしい 組み込むときは事前にsklearn.neighbors.typedefs.pydにリネーム 場所→
/anaconda3/env/<env_name>/Lib/site_packages/sklearn/neighbors/ • Intel MKL XXXが見つからない 以下にあるmkl_XXX.dllを組み込む 場所→ /anaconda3/env/<env_name>/Library/bin/ 36
38.
(よくある)エラー対策 • pyinstallerが見つけられないもの • (自動で作られる)specファイルに明示的に記載 onefileにするときに一緒にまとめてくれる •
デバッグ時は--onedirオプションで確認するのをオススメ • 以下は今回の例 37 sklearn_example.spec
39.
無事起動 • specファイルに指定して実行する場合 > pyinstaller
sklearn_example.spec で実行 通常は自動生成されoptionもここに埋め込まれる 38
40.
やりました! 39
41.
40 何か忘れているような…
42.
41 そのあと コマンドラインから実行… コマンドライン…? あの黒い画面ですか? なにそれ怖い! 私 同僚など
43.
GUIをつけてあげましょう • プログラミング出来ない人も安心! • なんか見た目がまぁまぁなツールが簡単に!! •
Pyinstallerのnoconsoleオプションでもう怖くない!!! • モテる!!!!(といいな 42
44.
PythonのGUI関連パッケージ • PySide • PyQt •
Tkinter • Kivy などなど… 43
45.
PySideについて • QtのPythonバインディング ただし、ライセンスが緩めてある • GUIを作るGUIツール「Qt
Designer」が使える! プログラムからGUIをゴリゴリ書かなくて済む オブジェクトの配置をこなれた感じに楽にできる • Pyinstallerで固めることで使ってもらいやすい! 44
46.
他のGUIツール • PyQt Qtそのものなので凝ったものを作れる ライセンス・商業利用注意 • Tkinter デフォルトでついてるやつ 標準感ある •
Kivy 現在発展中のGUI作成ライブラリ スマホ向けのGUIも作れる ドキュメント日本語化も進んでるみたいですよ! 45
47.
PySideのインストール • 動作確認環境 Windows10 64bit
Anaconda 4.1.1 Python3.4.5 (前半と同じ) • インストール方法(今回環境ではエラー) > pip install PySide • MSVC errorが出る場合 > pip install PySide –only-binary :all: でインストール可能 46
48.
PySideのインストール(Mac OS X) •
Macかつanacondaを使わない場合 > brew install qt でQtを事前に入れてからPySideを入れましょう 47
49.
Qt Designer • 置いてある場所 PySideがインストールされた場所にあるはず /Anaconda3/envs/<env_name>/Lib/site-packages/PySide •
今回の使用バージョン QtDesigner v4.8.5 48
50.
こんな見た目(初期設定) 49
51.
こんな見た目(初期設定) 50 Layouts ベースと なるもの ボタンやら 箱やら なんやら かんやら Property 各オブジェクトの 詳細をいじる
52.
お手軽GUI作成の流れ • Qt DesignerでWidgetを作る •
Qt DesignerでSlotを作る • Pythonスクリプトを繋げる 51
53.
ほら、簡単でしょう 52
54.
お手軽GUI作成 –Widget編 ① ベースのDialogを決める ②
Layoutsをレイヤーのように重ねてオブジェクトを配置 Layoutsにポイポイっとオブジェクトを放り込む spacerを入れるとそれっぽくなる ③ プロパティから細かいサイズや設定などは調整 53
55.
って見た方が早いですね! Qt Designer イメージ 54
56.
こんな感じ 55 ボタン テキストの箱 何となくのスペース 見栄えが 良くなる レイヤー
57.
お手軽GUI作成 –Slot編 ① Edit
Signal/Slotを選択 ② ボタンなどから矢印を引っ張る 特に他のオブジェクトと連携しなければ何もない場所を終端に ③ このSlot名を呼び出す箇所にやりたい動作を書く 56
58.
こんな感じ 57 ボタン押した時 動作設定
59.
お手軽GUI作成 –接続編 ① QtDesignerの.uiファイルを.pyファイルへ変換 >
pyside-uic.exe -o hello_gui.py hello.ui 変換ツールが標準付属(pyside-uic.exe) anaconda3/envs/<env_name>/Scripts ② mainのスクリプトを書く ③ Slotがある場合はSlotの動作を書く 58
60.
安定のHello World ボタンを押すと コンソールに"hello” と出すだけ!! 59 hello_gui.py .uiから変換した .pyファイルを呼ぶ
61.
ちょっと修正 • 設置したオブジェクトに"hello"を出力 slotの箇所を変更 • 値の埋め込み・値の取得もで可能 GUI側を修正した際は.pyファイルへ要変換 60
62.
実行! 61 押したら こんにちは
63.
実行! 62 押したら こんにちは まぁこんなもんです
64.
Hello GUI tool! •
これをpyinstallerで固めればOK > pyinstaller hello_gui.py --onefile – noconsole • Python環境不要でEXEファイルとして動作! 63
65.
完成! 64
66.
先ほどのデータ分析スクリプトをTool化 65 • 次をGUIで選択可能にしてみる • k-meansのcluster数 •
inputのCSVファイル • outputの出力先フォルダ
67.
データ分析スクリプトと接続① 66 • importしているパッケージ • これらを入れてもフリージング可能 sklearn_gui.py
68.
データ分析スクリプトと接続② • Input及びOutputのファイル・フォルダ取得ダイアログ設定 67 ファイルPath取得 ダイアログ フォルダPath取得 ダイアログ
69.
• k-meansクラスタリング部分 • 各パラメータ・ファイル関係をGUIから取得している データ分析スクリプトと接続③ 68 GUI上のテキスト 取得ダイアログ さっきの クラスタリング スクリプトを コピペ
70.
データ分析スクリプトと接続④ • main部分 特に今回は変えてない 69
71.
最後にフリージング • 前半部で設定したspecファイルと同様に設定 • >
pyinstaller sklearn_gui.spec specファイル内にて--onefile, --noconsoleオプション使用 • フリーズ完成 70
72.
実行フローイメージ 71 ① EXE実行 ② パラメータ 指定 ③ Calculation 実行 ④ 結果出力
73.
完成 Python環境不要 コマンドラインも出ない Pythonスクリプトが動作! 72
74.
【応用】さらにこじゃれた感じにするために • import logging 各スクリプトにloggerを用意してログ出力する機能をつける •
import traceback エラー時のtracebackを出力 • Sphinxを用いてツール全体のドキュメントを作る ReadTheDocsのスタイルが個人的には好きです 73
75.
今度こそ、やりました! 74
76.
75 どこでも使える このPythonツールどやー 素敵! 皆さん 同僚など
77.
まとめ • PyinstallerでPython環境無しでPython スクリプトを動作 特殊なパッケージを組み込む際は根気よく戦う •
PySideなどGUIパッケージで誰でも使いやすく PySideだとQt Designerが使えてGUI初心者でも比較的楽 どちらも紹介した以上に豊富な機能を備えています Python普及の一助に 76