タグ: python

  • Windows + Python + Conda

    昨日は第4回の「すごい広島 with Python」でした。
    前回の報告:

    Interface as Mimesis


    このときに py.exe による Windows 環境での Python の切り替えについて詳しく書かなかったので、このブログでその続きを書きます。
    昨日は「もくもく会」だったので、ディープラーニングの環境構築にとりかかりました。行ってみると「話したいので聞いてほしい」という参加者が多数いらっしゃって、楽しかったのですが、私の作業はあまり進まなかったです。。
    やってみたこと:Windows に Theano を(GPU対応なしで)インストールした。
    環境:Windows 10 Home (64bit)
    もともと入っている Python:Python 2.7 (32bit) と Python 3.6 (32bit)
    もともとできていたこと:
    Python 3.6 を入れるとついてくる py.exe を使って py -2 または py -3 で両者を切り替えることができた。
    今回 theano をインストールした手順:

    1. Miniconda Windows 64bit installer をデフォルトのオプションでインストール
    2. コマンドプロンプトで
      > conda install numpy scipy mkl
    3. つづいてコマンドプロンプトで
      > conda install theano

    theano の動作確認:

    C:\work>python
     Python 3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)] on win32
     Type "help", "copyright", "credits" or "license" for more information.
     >>> import theano
     >>> from theano import tensor as T
     >>> x1 = T.scalar()
     >>> w1 = T.scalar()
     >>> w0 = T.scalar()
     >>> z1 = w1 * x1 + w0
     >>> net_input = theano.function(inputs=[w1, x1, w0], outputs=z1)
     >>> print('Net input: %.2f' % net_input(2.0, 1.0, 0.5))
     Net input: 2.50
     >>> import numpy as np
     >>> x = T.fmatrix(name='x')
     >>> x_sum = T.sum(x, axis=0)
     >>> calc_sum = theano.function(inputs=[x], outputs=x_sum)
     >>> ary = [[1, 2, 3], [1, 2, 3]]
     >>> print('Column sum:', calc_sum(ary))
     Column sum: [ 2. 4. 6.]
     >>> theano.config.floatX = 'float32'
     >>> ary = np.array([[1, 2, 3], [1, 2, 3]], dtype=theano.config.floatX)
     >>> print('Column sum:', calc_sum(ary))
     Column sum: [ 2. 4. 6.]

    この状態で python コマンドは今回インストールした Miniconda の Python になっています。
    この状態での Python 処理系の切り替えの確認:

    C:\work>py -3.6
    Python 3.6.1 |Continuum Analytics, Inc.| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    C:\work>py -3.6-32
    Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    C:\work>py -2
    Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.

    公式 Python は 32bit 版を入れて Anaconda 系 Python は 64bit 版を入れる、という使い分けが必要にはなりますが py.exe ですべての環境を切り替えられることを確認しました。
    なお Theano の動作確認は Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 第13章を引用しました。
     

  • すごい広島 with Python &環境構築

    PyCon mini Hiroshima と Python Boot Camp in 広島 のフォローアップ活動として、毎月最後の水曜日の夜に「すごい広島 with Python」を開催しています。
    4月からはじめて3ヶ月やってみて、定着してきたので、やっと自信をもって報告してみることにしました。
    毎週水曜日の定例の「すごい広島」は「もくもく会」なのですが、「with Python」は、なにかやってみて知見を共有する、というところに力を入れていて、いまのところライトニングトーク形式での開催が続いています。
    私の提供した話題は5月は Django の環境構築、今月は某プログラミングコンテストの例題 with Python でした。
    先月も今月も「Linux で Python の作業環境の構築ではまった」という話を聞いたので、情報共有サイトで言い尽くされているのに、と思いながら、繰り返し喋ったことをもう一度ここで書いておきます。
    Linux のディストリビューションはたいてい Python 処理系に深く依存しています。なので、/usr/bin/python をアプリ開発に使ったり、逆に上書きしてしまうことは賢明ではありません。
    パッケージで Python を入れたいという気持ちは十分に理解できますが、私は Python Boot Camp テキスト をいちど読んで、その方法を理解することをお勧めします。
    このテキストでは Linux 向けの環境構築は「ソースからインストールしなさい」になっていて、不親切に見えるかも知れないのですが、実はデプロイ環境を作る手順として一番つぶしがきくというのが私の実感です。
    つまり、ソースから素直にコンパイル・インストールして、例えば /usr/local/bin/python3 が存在する状態を作り、その python3 に紐付いた環境で作業をするということです。
    丁寧にやるなら

    /usr/local/bin/python3 -m venv env

    で環境を作れば、ちゃんとその venv 環境では、自分がインストールした実行ファイルがパス指定なしに python や pip になってくれます。
    (コマンド名が python3 か python かも気にしなくていい)
    自分は /usr/local/bin しか使わないことにすれば、OS 環境への影響を心配する必要がありません。
    デプロイ環境でも、面倒がらずに最初に env/bin/activate するのが安全と思います。
    応用として、この手順は 2.7 系と 3 系を安全に切り替えたりするときにも有効です(詳細は省略)。
    Windows では複数のバージョンの Python を使い分けるときに、まず最新の Python 3 系をインストールして、ランチャー(py.exe)と venv (virtualenv) を使えば、どの処理系にも事前に PATH を通す必要がない(はず)です。
    上述した私の Django セットアップは「Boot Camp 方式」で仮想マシンの環境構築をしていますし、例題 with Python でも py.exe をちょこっと紹介しています。
    ふだんは私は個人的な技術メモは別のサイトにこっそり書いていますが、この件は、きっと同じようなことをいろんな人がしつこく書かないといけないのだろうと思って、めずらしくブログに技術ネタを書きました。

  • 「つくれば工房」で MicroPython 体験会

    この記事は たまに広島 Advent Calendar 2016 20日目の記事です。
    広島で Python のカンファレンスを開催してきた PyCon mini Hiroshima 実行委員会の西本です。
    その他に、オープンソースの Windows 用スクリーンリーダー NVDA の日本の開発者コミュニティ、NVDA日本語チーム、そして広島のコミュニティNVDA ユーザ会広島などをやってきました。
    11月12日の PyCon mini Hiroshima の報告は PyCon JP のブログに書きました
    また 11月27日 OSC 2016 Hiroshima のセッション『jus研究会広島大会「ITコミュニティの運営を考える」』で NVDA のコミュニティについて喋らせてもらいました。開催レポートで詳しく紹介していただいています。

    つくれば工房

    広島で「電子工作やLED手芸など自分で自由に作るものづくりの場」=「つくれば工房」を運営しておられる遠藤さんが PyCon mini Hiroshima 2016 に参加され、私が紹介した MicroPython について興味を示してくださったので、MicroPython 体験会を提案しました。
    事前に見学をさせていただきました。
    会場は広島市西区楠木町のアドウィンテクノ塾です。
    お子さんから年配のかたまでいろんな人がいらっしゃって、Arduino や 3D プリンタなど、いろいろなことにそれぞれ取り組んでいらっしゃいました。
    毎週土曜日に欠かさず開催されているそうです。ものづくりの「もくもく会」だと思いました。

    MicroPython体験会

    ということで12月10日の「つくれば工房」にて「MicroPython体験会」を開催していただきました。

    つくれば工房のウェブサイトに報告を掲載していただいているので、自分用の記録をここにまとめます。

    • 参加者 17人くらい。やはり年配の方からお子さん(お母さん同伴)まで。マイコン開発経験者もPython経験者もいらっしゃった。Windowsパソコンを持ってきたけどプログラミング未経験、というかたもいらっしゃった。
    • スイッチサイエンスの ESPr One の持参を推奨したが、他の ESP8266 基盤を持参された方もいた。機材によってはLED点滅の実験のためにLEDをGPIOポートにつないでいただく必要があった。
    • ファームウェアの書き込みのためにPCとMicroUSBケーブルで接続していただいた。充電はできるけど通信はできないMicroUSBケーブルもあり、サポートに手間取った。
    • 西本が事前に確認したのは PC 側に Python 2.7 + esptool.py をインストールして書き込みをする手順だった。体験会をした部屋で WiFi がうまく使えなかったため、USB メモリで ESP8266 Flasher と MicroPython のバイナリ、ESPr One のUSBシリアルドライバなどを回覧してセットアップしていただくことになった。
    • Windows に TeraTerm をインストールしていただいたら、バージョン 4.93 に文字化けの不具合があり、4.92 を入れ直していただいた。

    説明したこと:

    • nishimotzのサイトで紹介したLED1の点滅を、ターミナルから逐次入力でやってもらった。
    • コンマとピリオド、コロンなど、文法を説明した方が間違えにくいということに気づき、基本的な Python の文法の説明をした。
    • ペーストモードの説明をして、このLEDの点滅を def blink() のように関数として「メモ帳」に書いてもらって、ペーストモードで貼り付けてもらった。そうすると blink() だけで点滅を実行できる。
    • 早くできた人は PWM でだんだん明るくなるコードを自分で試していた。
    • トラブルシューティング:ペーストモードで改行が余分に入る。TeraTermの改行設定を送受信ともにCRにしてもらう。
    • WiFiを触ってもらうと面白いのだろうが、いろいろ難しそうだったので今回は説明を見送り。

    質問されたこと:

    • WebREPL が動いてない:MicroPython 1.8.6 から初期化を実行しないと WebREPL が動かない仕様になった。
    • 割り込みは?:ユーザーボタンを押すとメソッドを実行する、といったコードは動作を確認している。
    • 起動すると自動的に実行するコード(main.py)をどうやって書き込むの?:WebREPLでアップロードするか、プログラムをファイルシステムに書き込むためのプログラムをターミナルで実行する。
    • 本格的に使えるの?:処理系を自分でビルドすれば、C言語拡張モジュールを組み込むことができる。CQ出版「インターフェース」2016年10月号に情報あり。

    私はいろいろ準備不足でしたが、ベテランのかたが気を利かせてサポートしてくださったおかげで、無事に体験会を行うことができました。
    ふだん Arduino でマイコン開発を楽しんでおられるかたも何人かいらっしゃいましたが、MicroPython のメリットや面白さをなにか感じていただければと思います。
    広島に Python Boot Camp を誘致する計画も進んでいますが、広島で MicroPython 体験会、いかがでしょうか。こんどやるときはもっと上手にやれると思うので、ご連絡ください。
    自分が映ってる写真を撮り忘れたので、「つくれば工房」さんのサイトからお借りしました: