動的なmoduleのimport

基本的な動的importは __import__ で行う。
Dive Into Python > Functional Programming > Dynamically importing modules(サイトが消えてた…)

ただ、前述の方法だとモジュールの __init__.py をロードして、これを空にした実装の場合に欲しい実装が受け取れない。
そういう場合にはこうしろ。というのが、以下のもの。
How can I import a package using __import__() when the package name is only known at runtime?

こんな感じかな…

その後

カレントディレクトリ直下の’plugins’パッケージ内のモジュールを動的に読んでみた。

[OS X] ‘shebang’ について

OSXというか、Linux系シェルスクリプトの話題だけど、
スクリプトの先頭行に書かれるアレ。

Windows育ちには、なんのこっちゃって感じの記述だけど、linux育ちには重要不可欠。
で、Pythonで書いていても関係が出てくる。

それが、システム標準で呼び出されるPythonバージョンをshebangで管理している場合。。

Windowsにはそういうのがないので、環境変数の設定を整えるか、Cygwin環境を整える必要があるけど、Cygwin派じゃない場合には、そもそもshebangは機能しないのでなんの意味もないおまじないになっている…けど、それじゃマズイですな〜って話。

[OS X] matplotlibをpip installしようとしたら入らない

 掲題の問題が発生。

 pip install中にモジュールのビルドが走って、最終的にmatplotlibモジュール生成あたりでエラーがバリバリ発生してinstall失敗する。

 ネットを見ても、似た現象を起こす人を見掛けないので変だなーと思ったけど、そういえば1ヶ月ほど前にMac portsをインストールしたのを思い出す。。
 Mac portsをアンインストールしたところ、今度はpip installが完了した。

 しかし、今度は “import pylab as plt” や ”from matplotlib.pyplot as plt” とかやっても応答がなくなる。。

 調べてみると、matplotlib1.4系でそのような問題が発生することが分かっているらしい。
 ※見つけたのは2013年の話題だが変わってないっぽい…

 これを実行。

 今度はインストール後に「RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends.」なんていう文言のエラー発生…

 調べてみると、こんな記事に遭遇。。

 とりあえず記述通りに、~/.matplotlib/matplotlibrc ファイルを作った。

 まだこんなエラーが出る。

 やっぱ、pyenvでAnaconda入れようかな…

で、いれてみた。

 実際に入れようとすると、Python3.x系が入らなかったので2.x系の最新版をインストール。
 で、サンプルにこんなのを実行。

 え…相変わらず出ないじゃん…
 とか思ったら、最後に「 show() 」を実行する必要があるらしい。

 覚えておこう。。

 Centripetal Catmull–Rom splineのExampleコードも動いた。

その後

 最初にminiconda環境(Python3.x系)に入れていてうまくいかなかった方のmatplotlib。
 ~/.matplotlib/matplotlibrc ファイルは削除して「 plt.show() 」を最終行に付け加えたら表示できました…

 Anaconda環境を入れた時に入るバイナリ設定が効いてるってことか?

 結果的に、Python3.x系でも matplotlib が動くようになった。

その後のその後

 後日、anaconda3-2.3.0を再度installしてみると、〜.shファイルをちゃんとダウンロードし始めた。
 どうやら、サイトのメンテナンスかなにかで自分の試した時間には必要ファイルをダウンロードできなかっただけだった模様。

 うまくいかない時は、日を改めて挑戦してみる必要もあるようです…

pythonのサーチパスについて

どうもMac環境のサーチパスがいまいち分かっていないので、pyenv-virtualenv周りも含めた話でちょっと情報を探してみた、めも。

Python の module search path ついて調べてみる

基本的には、なにか import して モジュール名.__file__ でパス調べてみろ。って感じか。
pyenvで導入している miniconda環境でやってみると、こんな感じだった。

Pythonのリファレンスは日本語版も比較的しっかり出来てるので、最初からリファレンスのモジュールの説明を理解する方が確実ですけどね。
自分の場合は、MacOSの環境変数周りをちゃんと把握する方が必要か…

Catmull–Rom splineのプロット方法

なるほど。
気にしてなかったけど、このスプライン関数って n点を入力する場合の補間手順がすごい楽々だったんですね。

Centripetal Catmull–Rom spline

補間式的には4点必要で、点0〜3で点1〜2の軌道が得られる。
6点ある場合は、点0-3, 1-4, 2-5, 3-6 の順に入力すると、点1-2, 2-3, 3-4, 4-5が得られる。

端っこに線が繋がらないので、繋ぎたい時は始点と終点を2重にしたデータを作ればOK…と。

補間結果に3パターン

StackoverflowのQ&A

Uniform, Centripetal, Chordal があって、入力に対して補間幅が小さい場合の結果をみると “Centripetal” が優秀っていう件を説明してる。

Pixarの作業管理の為のパイプラインシステム

めも。

USDがシーグラフで発表になってたのを書いておく。

公開は来年以降みたいな話を聞くけど、これが使えるとMayaのシーン管理は相当効率化される。

べつに公開されるわけじゃないけど、PRESTOっていうプレビューできるツールも気になる…

その後

 何故パイプラインって書いたんだろう?
 パイプライン向けのコンテナっていうのが正しいかな。いろいろ情報を内包して、それを管理できる。
 スクリプトによる自動化処理も可能になっている。データ構築をスクリプトで行う形で基本のコンテナを用意したり、コンテナ内に修正を掛けたりもできそう。