DrawBotから外部パッケージを使う
2019-03-18
DrawBotはPythonを使って図形を描いたりいろいろ作ったりできるオープンソースのソフトウェアです。現在はRoboFontというフォントエディタの作者が主に開発しているため、タイプ関係の人がよく使っている印象です。
シンプルなツールですがPythonのエコシステムをそのまま利用できるためかなりパワフルです。インタラクティブなことはしにくいものの、Processingよりも書きやすいので(個人の主観です)フォント界隈の外にも広まってほしいなと思います。
まだ執筆途中のようですが、Python for DesignersがPythonとDrawBotのイントロダクションとして分かりやすくまとまっています。
さて、DrawBotはそれ自体をモジュールとしてインポートして使うこともできますが、macOSアプリケーションとしてそのまま利用することが多いです。その場合、使われるPythonはDrawBot.appに入っているものであり、パッケージもアプリ内のものが使用されます。標準パッケージ以外にもFontToolsやFontPartsなどのフォント関連のパッケージが入っていますが、NumPyやpandasなどといったより汎用的なパッケージは含まれていません。
DrawBot.appから外部パッケージを使うには、パッケージの置き場所をパスに追加してあげる必要があります。
まず、DrawBot内部のPythonバージョンを調べます。
import sys
print(sys.version)
3.6.4 (v3.6.4:d48ecebad5, Dec 18 2017, 21:07:28)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
3.6.4
だということが分かったので、pyenvを使ってこのバージョンのPythonをインストールし、必要なパッケージを追加します。
$ pyenv install 3.6.4
$ pyenv global 3.6.4
$ pip install numpy
最後に、DrawBotで実行するスクリプトの先頭に次のコード追加します。
# Load external packages
import sys
import os
mod_dir = os.path.expanduser('~/.pyenv/versions/3.6.4/lib/python3.6/site-packages')
if mod_dir not in sys.path:
sys.path.append(mod_dir)
これで外部パッケージをimport
し放題です。それではハッピーコーディング!