Articles in the Python category

  1. IoTでPythonがどのぐらい扱えるか調べてみる

    去年のPyConJP 2017でIoT周りとpythonは親和性高いし使えるプロジェクトも多いらしいことを聞いていたので、どんなものがあるか調べてみました。

    プレゼンテーション:Pythonの本気!RaspberryPiやEdisonを使ったIoTシステムの構築 | PyCon JP 2017 in TOKYO

    あと組み込み系のmrubyの話題もあったので、Pythonではどうなってるのか気になったのもあります。

    Python処理系

  2. macOSとHomebrewで作るpyenv+pipenvを使った複数pythonバージョンの仮想実行環境

    表題通りですが、割と悩んでしまったのでとりあえずメモです。

    なおまだしっくり来てるわけではないので、他にいい方法があれば教えてほしいです。

    homebrew-versionsがdeprecatedしてた

    すっかり忘れていたのですが、Homebrewにあるリポジトリ内の複数のバージョンを管理できる、homebrew-versionsがいつの間にか廃止(deprecated)されていました。1年前に終わってたようです。全く気がついてなかった。。

    Homebrew/homebrew-versions: Homebrew/versions (deprecated)

    💀 Homebrew/versions (deprecated)

    だそうです。骸骨。。

    表題のPythonですが、今まで3.4, 3.5, ...といったマイナーバージョンの管理はhomebrew-versionsを使っていたのですが、tapしたリポジトリは意味をなさなくなり、最近ではbrew upgradeするとhomebrew/coreのFomulaで定義されている最新版が入ってしまいます。

    このブログの記事を公開してる現在では3.7がリリースされたので有無言わずに3.7がインストールされます。

    homebrew-core/python.rb at master · Homebrew/homebrew-core

    (ちなみに2.7はpython@2でインストールできます。こちらも現在は2.7.15が入ります …

  3. pycgettbというpythonパッケージを作りました

    年末前に今年ちょっとした目標だったちょっとしたツールをPyPIに登録しました。PyPIデビューっていい響きですw

    pycgettb 0.1.2 : Python Package Index

    hrsano645/pycgettb

    このパッケージ、と言いますか同梱のコマンド(pysgettbcli)のほうが主役です。このコマンドの機能を一言で言うと帳票チックなExcelファイルからデータを吸い出してテキストデータにしてくれます。

    吸い出す元のExcelファイルと同じ形で抜き出したい場所に対して特別なフォーマットの文字列を埋め込み、その文字列と同じ名前を変数名としてjinja2テンプレートを作る事で、テキストファイルにしてくれます。

    言葉で説明するのがまだ腑に落ちないのもあって、具体的な使い方については英語のREADMEか日本語で書いたREADMEを見ていただければと思います。 ただ英語のREDAMEは翻訳サービスベースなのでちゃんとしたものになってないでとりあえず日本語のREADMEを見ていただければと。英語苦手なままです。。

    pycgettb/README.ja.rst at master · hrsano645/pycgettb

    なぜ作ったか?

    このパッケージには元となるその場しのぎレベルのスクリプトがありますが、本業でよく使うシチュエーションがあったので作りました。

    本業(家業)は自動車プレス金型設計事務所にいますが、プレス金型では圧力に関する計算を良くします。そのときに手計算は面倒なのもあってExcelで計算をして結果が見れるようにしています。

    その計算結果を今までは主に2次元の図面上に「手入力」してもらっていたのですが、流石に見るに堪えない思いもありどうにかしたいと考えていました。

    Excelで入力したセルのデータを吸い出してどうにかしようとした時の選択肢は、Excel VBAで計算した結果を別のファイルに出力したり、何かしらの方法で渡す手段を用意するのが普通ですかね? ファイル出力は実装したこともありますが、言わずもがな言語仕様も扱いづらい事もあって面倒です。

    他にはPythonなどの別の環境からExcelのファイルを読み込んでパーサー処理をするがあります …

  4. Python3.6のfリテラル文字列(f-string)が便利なのと怖い面について

    久々にpythonネタで、今年の2月に気がついてほったらかしにしてた話。

    fリテラル/フォーマット済み文字列リテラル/f-stringとは

    PEP-484で定義, 承認されてpython3.6に入った新しいリテラル表記です。簡単な例はこちら

    >>> name = "f-string"
    >>> f"{test} death!"
    'f-string death!’
    

    中身はstr.formatをそのまま使えるっぽいですが、変数名を直接かいて呼び出せるのが新しいです。

    使い方は公式ドキュメントを見たほうが早いです。

    2. 字句解析 — Python 3.6.3 ドキュメント

    辞書はどうする?

    良く辞書を展開する時があるのでfリテラルでも使えるのか試してみました。
    公式ドキュメントを見たところ、ダブルクオーテーションの中でシングルクォーテーションを使えば展開できます。

    >>> td1 = {"name":"suzuki", "age":"32"}
    
    >>> f"{td1['name']}. age:{td1['age']}"
    'suzuki. age:32’
    

    が、いちいちクオーテーションを二種類使うとかっこ悪いですね。。。辞書の場合はstr.formatを使ったほうが楽かも。引数の展開が使えるので …

  5. Python Boot Camp for ishiilabを開催しました

    8/5の午後に、お手伝いしている大学の研究室内でここ数年行っているPython布教活動として、新参加ゼミ生向けのPython Boot Campを開催してみました。

    昨年までは、自分で用意したテキストを使って各自でテキストをこなすスタイルでやっていました。その時までの資料はこちら。

    GitHub - hrsano645/ishiilab_python_tutorial: 東海大学石井研究室の研究室内Pythonチュートリアルの資料です

    今年は、一般社団法人PyCon JPが各地で開催されている Python Boot Camp のテキストを利用させていただきました。CC-BY 4.0なので条件を守れるなら自由に利用できるようです。

    初心者向けPythonチュートリアルを日本各地で開催 — PyCon JP

    Python Boot Camp Text — Python Boot Camp Text 2016.04.28 ドキュメント

    自分が一応のレベルで用意したスライドはこちらです。補足説明ぐらい?しか書いておりません。

    参加された方は9人とほぼすべてのゼミ生が参加でした。昼過ぎから5時間ほどで休憩は自由。基本的にテキストをみんなでこなして、質問や困ったときはその都度受け付ける方法を取りました。

    結構みなさん進捗が良くて、一部はスクレイピングのテキストまでこなされていたようですがファイルの操作あたりで時間切れな方が多数でした。アドバイスする側としては、どの部分で躓いたかやトラブルがあったかが興味深く勉強になりました。思い出しながら様子を箇条書きで残しておきます …

  6. virtualenv(1.11.6) + windows 7で複数のPythonバージョン(64bit, 32bit含む)を使おうとすると失敗する件

    仕事で久々にWindowsのPythonを使おうと、pipのアップグレードやら入れてあるモジュールをアップグレードしてまして、

    virtualenvも1.11.6となってましたが、それを利用してpython2.7.8とpython3.4.2の仮想環境をつくろうとしたらエラーが出て戸惑った話です。

    要約

    • Virtualenv 1.11.6にて、64bitOSに32bitのPythonを複数バージョンごとに入れて、virtualenvをインストールしたバージョン以外のpython環境を指定して仮想環境をつくろうとするとエラーが起こる
    • virtualenv側でPythonのインストールされているリストを調べに行くコードに不具合がある
    • 修正はされているが、develop branchにあるので、githubのdevelop branchのモノをインストールすると動く
      • コード側のバージョンは1.12devとなってるので、1.12がリリースされたら改善しているはずです。
      • インストール方法は公式のドキュメントを見ればわかります。

    本題

    PS C:\Users\hiroshi> virtualenv --python="C:\python34\python.exe" testpy2
    Traceback (most recent call last):
      File "C:\Python27\lib\runpy …
  7. pythonで設定ファイルを使うときに何を使えばいいのか。をメモっただけの記事

    雑談

    お久しぶりです。9月から諸事情で活動全般が停滞してまして、ブログもさっぱり放置していました。

    Twitterなどなどは精力的に更新していましたが、ブログを書くとなるとちょっと体力いるなあと感じてしまってます。

    ブログのネタはたくさんありまして、Evernoteにはたくさんのドラフトな記事がありますので、少しずつですがアップしていこうと思います。

    本題

    ちょっと前にPythonで設定ファイルを扱いたいときに、どういった形式をどういったモジュールで扱えるのかを箇条書きしたりしたメモです。

    Python界隈では様々なモジュールがありますので、これのまとめが一概に言えるものではないのですが、あまりまとまった記事がなかったような気がするので上げてみようと思います。

    (Python公式でまとめられていた、ConfigParserShootoutの劣化版な感じでもあります。jsonとかyamlはないしまあいいかなと)
    https://wiki.python.org/moin/ConfigParserShootout

    なんで調べたの?

    GUIの設定ファイルを書くとき、ファイルをコンバートするような処理の時に、プロファイル定義を複数用意したかった時に悩んだので。

    何が問題になるか

    • 書きやすいか
    • 複数の値を持てるか
    • 複雑な構造(入れ子構造や行列とか)は作りやすいか
      • プロファイル的なものを管理するときに、1ファイルオンリーでやる場合は必要
      • 複数ファイル(conf.d的なディレクトリ)を使うならその限りではないと思う

    設定ファイルにはどんなものがあるか?

    ini

    • Winでよく見たりするけどLinuxのconfファイル系でも結構見る
    • セクションでカテゴリーにして、オプション名とバリューで設定を定義
      • 基本的に、[セクション] -> オプション = バリュー
    • よく使われるけど …
  8. PyConJP 2014で見たかったセッション

    書き忘れたので新しい記事に分けた(汗)

    備忘録なので箇条書きです。

    Pelicanのライブ映像は実は見たのですが、Wordpressから自前でこういうものを作るつもりでしたが、Pelicanいいですね。事務所のサイトもこれでリニューアルしたいな。

  9. Python3.4のLoggingモジュールでログメッセージの文字列フォーマットをstr.formatメソッドの書式指定文字列を使う方法

    タイトル長くてすみません。タイトル通りで使い方をただメモしたかっただけです。

    # これはダメ
    >>> logging.basicConfig(format="[str.format ver] :{} / {}".format(levelname, message))
    
    NameError Traceback (most recent call last)
    <ipython-input-15-6b4e7d3e1ac2> in <module>()
    ----> 1 loghandle=logging.basicConfig(format="str.format log :{} / {}".format(levelname, message))
    NameError: name 'levelname' is not defined
    # まあそうだよね・・・
    
    # これで出来ました
    >>> logging.basicConfig(format="[str.format ver] :{levelname} - {message}", style="{")
    >>> logging …
  10. pyside-uic でpyファイルを作るときは、リダイレクトではなく"-o"オプションを使う

    要約

    windows(多分他のプラットフォームでも)でpyside-uicを使うときは

    以下はダメで

    pyside-uic mainwindow.ui > mainiwndow.py
    

    以下を使うこと

    pyside-uic -o mainiwndow.py mainwindow.ui
    

    要約だけで終わるのもあれなので

    事のいきさつ

    内製ツールのGUIツールキットをWxWidgetなwxpythonからQtなPySideに切り替えてます。

    ようやく環境と基礎的なことがわかってきたので、GUIデザイナー機能が入ってるQt Creator 2.8を使ってデザインしていました。 (PySideはQt4系の対応になっているので、Qt5に対応しているQt Creator 3.0でなくても良いかなと考えて、一つ古い2.8を使ってます)

    PySide側でこのデザインしたファイル(uiファイル)を使うときは、pyside-uicを使います。 で、具体的にはこういうふうにコマンドを打ってました。

    pyside-uic mainwindow.ui > mainiwndow.py …

About Me

実家の自動車プレス金型設計業(sano-design.info)に所属。
また東海大学石井研究室(ishiilab.net)でたまにお手伝いしてます。
サイト制作/python/Ubuntu 作ったり扱います。 小さいガジェットがとっても好き。
最近は諸事情で家事業が多めです。

スポンサードリンク