kenban nikki    archives   tags   

DrawBotから外部パッケージを使う

2019-03-18

DrawBotはPythonを使って図形を描いたりいろいろ作ったりできるオープンソースのソフトウェアです。現在はRoboFontというフォントエディタの作者が主に開発しているため、タイプ関係の人がよく使っている印象です。

シンプルなツールですがPythonのエコシステムをそのまま利用できるためかなりパワフルです。インタラクティブなことはしにくいものの、Processingよりも書きやすいので(個人の主観です)フォント界隈の外にも広まってほしいなと思います。

まだ執筆途中のようですが、Python for DesignersがPythonとDrawBotのイントロダクションとして分かりやすくまとまっています。

さて、DrawBotはそれ自体をモジュールとしてインポートして使うこともできますが、macOSアプリケーションとしてそのまま利用することが多いです。その場合、使われるPythonはDrawBot.appに入っているものであり、パッケージもアプリ内のものが使用されます。標準パッケージ以外にもFontToolsFontPartsなどのフォント関連のパッケージが入っていますが、NumPypandasなどといったより汎用的なパッケージは含まれていません。

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し放題です。それではハッピーコーディング!