blockdiagをMacでもUbuntu Serverでも導入する
最初に言っておく。PILが危険だ
easy_install は危険だ!!!!インストールは簡単だがアンインストールがタルい!!!!*1PIL でハマるから pip を使うんだ!!!!
Pythonの環境構築メモ - atas
PIL まわりでハマる可能性はかなりあるから、公式ドキュメントでは easy_install しているけど pip で virtualenv で管理したほうが安全だと思う。製作者の世界の小宮さん( @tk0miya さん)はどう言うかわからないけど、おれはそう言っておくよ。
@xxxxxxxxx
pip でなくて easy_install 使ってるのは、あんまり理由はないですが、Windows で egg を落とせないってのがひとつあります。virtualenv は「単にツールを使いたい人」には大げさなので、標準の手順では紹介してません。
なるほどなー。
簡単に pip を概説すると npm とか cpan とか bundler みたいにこうパッケージ管理システムです。で、それを簡単に(Python自体も含めて)サンドボックスにできるのが virtualenv です。
easy_install pip
# これ以後は pip で管理する
普段 Python を使わない人は無理にサンドボックスにしなくてもグローバルにおいておいてもいいかもしれない。そこらへんは自己責任。自分はとりあえず必ずサンドボックス内で作業するようにしている。
# virtualenv と便利スクリプトの virtualenvwrapper を導入 pip install virtualenv pip install virtualenvwrapper
# サンドボックス作成
mkvirtualenv diag
blockdiag 導入でハマりやすいポイント
- PIL がライブラリをみてくれなくてハマる
- TrueType Font を指定できなくてハマる
基本的にはこれだけです
Macは簡単
環境
blockdiag の概要 — blockdiag 1.0 documentation
この公式ドキュメントのとおりに Foluma を作成してやる
vi /usr/local/Library/Formula/freetype2.rb
require 'formula' class Freetype2 <Formula url 'http://sourceforge.net/projects/freetype/files/freetype2/2.4.4/freetype-2.4.4.tar.gz/download' homepage 'http://freetype.sourceforge.net/index2.html' md5 '9273efacffb683483e58a9e113efae9f' version '2.4.4' # depends_on 'cmake' def install system "./configure", "--disable-debug", "--disable-dependency-tracking", "--prefix=#{prefix}" # system "cmake . #{std_cmake_parameters}" system "make install" end end
brew install freetype2 pip install PIL pip install blockdiag
これで好きに作成できる。クッソ簡単である。世界の小宮さんすごい。
本題::Ubuntu Server で blockdiag 導入する
環境
なにはともあれ PIL でハマらないために
以前 http://d.hatena.ne.jp/atasatamatara/20120723/1343044059 ってのを書いたけど @hajime_nakagami さんの http://nakagami.blog.so-net.ne.jp/2012-07-31 のほうがよくまとまっている。これのとおりに PIL をインストールする前に準備しておく
# 各種画像処理関係のライブラリを導入 sudo apt-get install python-imaging
って書いたけど
@xxxxxxxxx
apt-get install python-imaging だと -dev パッケージが入らないので、build-dep がいいですよー。
こっちのほうがいいらしい
なんか PIL は /usr/lib/ に関連ファイルがないとインストール時に見てくれないっぽいのでかならず先にいれておく
# x86_64-linux-gnu あたりの部分などは適宜読み替える可能性がある sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/ sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/ # python-imaging で入ったのは今回は libfreetype.so.6 だった # 今回いろいろ迷ってて sudo apt-cache search freetype | less した # libfreetype6 - FreeType 2 フォントエンジン共有ライブラリファイル # libfreetype6-dev - FreeType 2 font engine, development files # ただしこれらは今回関係ないっぽい sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6 /usr/lib/
で、FreeType font もいれる必要がある。よくわかんないので無理やりさがした
# とりあえず ttf でさがすかー # とりあえず ipafont がたしか TrueType Font だったなー sudo apt-cache search ttf | less # とりあえず ttf-ipafont-uigothic ってのが IPA の日本語フォントっぽいなー sudo apt-get install ttf-ipafont-uigothic
全部いれてから pip instal blockdiag そして依存関係にある PIL
pip install blockdiag
これで手元では問題なく日本語ファイルが扱えることを確認しました。
フォントを強制指定する場合は
blockdiag -f /usr/share/fonts/truetype/ipafont-nonfree-uigothic/ipagui.ttf hoge.diag
公式ドキュメントにあるとおりデフォルトのフォント指定する場合は ~/.blockdiagrc に
[blockdiag] fontpath = /usr/share/fonts/truetype/ipafont-nonfree-uigothic/ipagui.ttf
蛇足::エラーとか
せっかく blockdiag いれたのに!
blockdiag hoge.diag # ERROR: The _imagingft C module is not installed # ERROR: UnicodeEncodeError caught (check your font settings)
エラーになったら落ち着いてシンボリックリンクとかを確認して
# 再インストール pip uninstall PIL; pip install PIL
パッケージなにいれたか困ったら
dpkg -l | less
このパッケージどこに実体があるんだ????と思ったらとりあえず find で探している
# あの ttf ってどこにあるんだ? # * でワイルドカード指定 sudo find / -name "*ttf" # あの libjpeg とかってどこにあるんだ? sudo find / -name "*libjepeg*"
*1:sys.pathあたりからたどってなんかすれば手動で消せるはずだけど、それをやるのはだるい