はじめに
blockdiagは,テキストで定義した情報を元に,チャートを作成してくれるツール.これをbrewからインストールして,実際にチャートを作ってみるところまで作業する.blockdiag自体はPythonで作られているので,その環境も作ることに.
インストール事前確認
依存関係のあるfreetypeパッケージが入っているか確認.
MBA2014:~ ujpadmin$ 🆑brew search freetype freetype ✔ MBA2014:~ ujpadmin$
pythonのパッケージ管理システムが必要そうなので,それが入っているか確認.
MBA2014:~ ujpadmin$ 🆑which easy_install /usr/local/bin/easy_install🈁 MBA2014:~ ujpadmin$
いつ,入ったのだろうか.ちなみにバージョンを確認.
MBA2014:~ ujpadmin$ 🆑/usr/local/bin/easy_install --version setuptools 19.4 from /usr/local/lib/python2.7/site-packages (Python 2.7)🈁 MBA2014:~ ujpadmin$
パッケージのインストール
pythonのeasy_installコマンドを使ってインストール.
MBA2014:~ ujpadmin$ 🆑 easy_install blockdiag Creating /usr/local/lib/python2.7/site-packages/site.py Searching for blockdiag Reading https://pypi.python.org/simple/blockdiag/ Best match: blockdiag 1.5.3 Downloading https://pypi.python.org/packages/5f/fc/a977375277e22f9a90e04fe7bd61e49c556bb1c 1d7c8065277c21ba2fef9/blockdiag-1.5.3.tar.gz#md5=24c1de40066687a6e0f401a97197f43c Processing blockdiag-1.5.3.tar.gz Writing /var/folders/js/bwg7lpls6sl7fvzbzh1_451875gjwy/T/easy_install-LuC5LC/blockdiag-1.5 .3/setup.cfg Running blockdiag-1.5.3/setup.py -q bdist_egg --dist-dir /var/folders/js/bwg7lpls6sl7fvzbz h1_451875gjwy/T/easy_install-LuC5LC/blockdiag-1.5.3/egg-dist-tmp-lcJq6r warning: no previously-included files found matching '.drone.io.sh' warning: no previously-included files found matching 'examples/update.sh' zip_safe flag not set; analyzing archive contents... blockdiag.tests.test_command: module references __file__ blockdiag.tests.test_generate_diagram: module references __file__ blockdiag.tests.test_utils_fontmap: module references __file__ blockdiag.tests.utils: module references __file__ blockdiag.tests.rst.test_base_directives: module references __file__ creating /usr/local/lib/python2.7/site-packages/blockdiag-1.5.3-py2.7.egg Extracting blockdiag-1.5.3-py2.7.egg to /usr/local/lib/python2.7/site-packages Adding blockdiag 1.5.3 to easy-install.pth file Installing blockdiag script to /usr/local/bin
Installed /usr/local/lib/python2.7/site-packages/blockdiag-1.5.3-py2.7.egg Processing dependencies for blockdiag Searching for webcolors Reading https://pypi.python.org/simple/webcolors/ Best match: webcolors 1.5 Downloading https://pypi.python.org/packages/1d/e8/24f4a8854290c685c335076a322e9db7224e88f f723de5d01ced2e1d767d/webcolors-1.5.tar.gz#md5=2e9da1bbb7a087c6108e05be64640afb Processing webcolors-1.5.tar.gz Writing /var/folders/js/bwg7lpls6sl7fvzbzh1_451875gjwy/T/easy_install-bOXNx4/webcolors-1.5 /setup.cfg Running webcolors-1.5/setup.py -q bdist_egg --dist-dir /var/folders/js/bwg7lpls6sl7fvzbzh1_ 451875gjwy/T/easy_install-bOXNx4/webcolors-1.5/egg-dist-tmp-I_7uWZ zip_safe flag not set; analyzing archive contents... Copying webcolors-1.5-py2.7.egg to /usr/local/lib/python2.7/site-packages Adding webcolors 1.5 to easy-install.pth file
Installed /usr/local/lib/python2.7/site-packages/webcolors-1.5-py2.7.egg
Searching for Pillow
Reading https://pypi.python.org/simple/Pillow/
Best match: Pillow 3.2.0
Downloading https://pypi.python.org/packages/e2/af/0a3981fffc5cd43078eb8b1057702e0dd2d5771
e5aaa36cbd140e32f8473/Pillow-3.2.0.tar.gz#md5=7cfd093c11205d9e2ebe3c51dfcad510
Processing Pillow-3.2.0.tar.gz
Writing /var/folders/js/bwg7lpls6sl7fvzbzh1_451875gjwy/T/easy_install-zPaYUh/Pillow-3.2.0/
setup.cfg
Running Pillow-3.2.0/setup.py -q bdist_egg --dist-dir /var/folders/js/bwg7lpls6sl7fvzbzh1_
451875gjwy/T/easy_install-zPaYUh/Pillow-3.2.0/egg-dist-tmp-vqFyAA
warning: no files found matching '*.sh'
no previously-included directories found matching 'docs/_static'
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.editorconfig'
warning: no previously-included files found matching '.landscape.yaml'
warning: no previously-included files found matching 'appveyor.yml'
warning: no previously-included files found matching 'build_children.sh'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files matching '.git*' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
--- using frameworks at /System/Library/Frameworks
Building using 4 processes
Building using 4 processes
Building using 4 processes
Building using 4 processes
clang: warning: -framework Tcl: 'linker' input unused
clang: warning: -framework Tk: 'linker' input unused
clang: warning: -framework Tcl: 'linker' input unused
clang: warning: -framework Tk: 'linker' input unused
Building using 4 processes
Building using 4 processes
--------------------------------------------------------------------
PIL SETUP SUMMARY
--------------------------------------------------------------------
version Pillow 3.2.0
platform darwin 2.7.11 (default, Apr 6 2016, 18:44:54)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
*** OPENJPEG (JPEG2000) support not available🈁
--- ZLIB (PNG/ZIP) support available
--- LIBTIFF support available
--- FREETYPE2 support available
*** LITTLECMS2 support not available🈁
--- WEBP support available
--- WEBPMUX support available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.To check the build, run the selftest.py script.🈁
Copying Pillow-3.2.0-py2.7-macosx-10.10-x86_64.egg to /usr/local/lib/python2.7/site-packages
Adding Pillow 3.2.0 to easy-install.pth file
Installing pildriver.py script to /usr/local/bin
Installing viewer.py script to /usr/local/bin
Installing gifmaker.py script to /usr/local/bin
Installing pilfile.py script to /usr/local/bin
Installing pilconvert.py script to /usr/local/bin
Installing pilfont.py script to /usr/local/bin
Installing createfontdatachunk.py script to /usr/local/bin
Installing explode.py script to /usr/local/bin
Installing pilprint.py script to /usr/local/bin
Installing player.py script to /usr/local/bin
Installing thresholder.py script to /usr/local/bin
Installing painter.py script to /usr/local/bin
Installing enhancer.py script to /usr/local/bin
Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
threading.py", line 801, in __bootstrap_inner
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
threading.py", line 754, in run
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
multiprocessing/pool.py", line 330, in _handle_workers
<type 'exceptions.TypeError'>: 'NoneType' object is not callable
Exception TypeError: TypeError("'NoneType' object does not support item deletion",) in <Finaliz
e object, dead> ignored
Exception in thread Thread-2 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
threading.py", line 801, in __bootstrap_inner
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
threading.py", line 754, in run
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
multiprocessing/pool.py", line 366, in _handle_tasks
<type 'exceptions.TypeError'>: 'NoneType' object is not callableInstalled /usr/local/lib/python2.7/site-packages/Pillow-3.2.0-py2.7-macosx-10.10-x86_64.egg Searching for funcparserlib Reading https://pypi.python.org/simple/funcparserlib/ Best match: funcparserlib 0.3.6 Downloading https://pypi.python.org/packages/cb/f7/b4a59c3ccf67c0082546eaeb454da1a6610e924d2e7a 2a21f337ecae7b40/funcparserlib-0.3.6.tar.gz#md5=3aba546bdad5d0826596910551ce37c0 Processing funcparserlib-0.3.6.tar.gz Writing /var/folders/js/bwg7lpls6sl7fvzbzh1_451875gjwy/T/easy_install-Yi32Zb/funcparserlib-0.3. 6/setup.cfg Running funcparserlib-0.3.6/setup.py -q bdist_egg --dist-dir /var/folders/js/bwg7lpls6sl7fvzbzh 1_451875gjwy/T/easy_install-Yi32Zb/funcparserlib-0.3.6/egg-dist-tmp-cnpiTT warning: no files found matching 'requires.txt' zip_safe flag not set; analyzing archive contents... Copying funcparserlib-0.3.6-py2.7.egg to /usr/local/lib/python2.7/site-packages Adding funcparserlib 0.3.6 to easy-install.pth file
Installed /usr/local/lib/python2.7/site-packages/funcparserlib-0.3.6-py2.7.egg Finished processing dependencies for blockdiag MBA2014:~ ujpadmin$
Pillow 3.2.0がインストールされている.PillowはPILというpythonの画像系ライブラリのフォーク.PILが開発終了なのだそう. selftest.pyを実行しようと考えたのだが,PIL用だった模様でPillowをインストールしても配置され無い. とりあえず,openjpegとlittlecms2が入って無いとログされている.
openjpegとlittle-cms2をインストール
まずはライブラリをbrewで調べる.
MBA2014:~ ujpadmin$ 🆑brew search openjpeg homebrew/versions/openjpeg20 homebrew/versions/openjpeg21 openjpeg🈁 MBA2014:~ ujpadmin$
openjpegをインストール.
MBA2014:~ ujpadmin$ 🆑brew install openjpeg ==> Installing dependencies for openjpeg: little-cms2🈁 ==> Installing openjpeg dependency: little-cms2 ==> Downloading https://homebrew.bintray.com/bottles/little-cms2-2.7.yosemite.bottle.tar.gz ######################################################################## 100.0% ==> Pouring little-cms2-2.7.yosemite.bottle.tar.gz 🍺 /usr/local/Cellar/little-cms2/2.7: 17 files, 1M ==> Installing openjpeg ==> Downloading https://homebrew.bintray.com/bottles/openjpeg-1.5.2_1.yosemite.bottle.tar.g ######################################################################## 100.0% ==> Pouring openjpeg-1.5.2_1.yosemite.bottle.tar.gz 🍺 /usr/local/Cellar/openjpeg/1.5.2_1: 25 files, 373.7K MBA2014:~ ujpadmin$
一緒にlittle-cms2もインストールされた.
Pillowの再インストール
openjpegとlittle-cms2を再認識させるために,一度Pillowをアンインストールする.
MBA2014:~ ujpadmin$ 🆑 pip uninstall Pillow Uninstalling Pillow-3.2.0: /usr/local/lib/python2.7/site-packages/Pillow-3.2.0-py2.7-macosx-10.10-x86_64.egg Proceed (y/n)? 🈁
yを選択して進める.
Proceed (y/n)? 🆑y
Successfully uninstalled Pillow-3.2.0
Traceback (most recent call last):
File "/usr/local/bin/pip", line 9, in <module>
load_entry_point('pip==8.1.2', 'console_scripts', 'pip')()
File "/usr/local/lib/python2.7/site-packages/pip/__init__.py", line 221, in main
return command.main(cmd_args)
File "/usr/local/lib/python2.7/site-packages/pip/basecommand.py", line 252, in main
pip_version_check(session)
File "/usr/local/lib/python2.7/site-packages/pip/utils/outdated.py", line 102, in pip_version
_check
installed_version = get_installed_version("pip")
File "/usr/local/lib/python2.7/site-packages/pip/utils/__init__.py", line 848, in get_install
ed_version
working_set = pkg_resources.WorkingSet()
File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 619
, in __init__
self.add_entry(entry)
File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 675
, in add_entry
for dist in find_distributions(entry, True):
File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 194
2, in find_eggs_in_zip
if metadata.has_metadata('PKG-INFO'):
File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 146
3, in has_metadata
return self.egg_info and self._has(self._fn(self.egg_info, name))
File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 182
4, in _has
return zip_path in self.zipinfo or zip_path in self._index()
File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 170
4, in zipinfo
return self._zip_manifests.load(self.loader.archive)
File "/usr/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/__init__.py", line 164
4, in load
mtime = os.stat(path).st_mtime
OSError: [Errno 2] No such file or directory: '/usr/local/lib/python2.7/site-packages/Pillow-3.
2.0-py2.7-macosx-10.10-x86_64.egg'
MBA2014:~ ujpadmin$エラーで終了.無視. インストール.
MBA2014:~ ujpadmin$ 🆑pip install Pillow
Collecting Pillow
Downloading Pillow-3.3.0-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_6
4.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.2MB)
100% |████████████████████████████████| 3.2MB 300kB/s
Installing collected packages: Pillow
Successfully installed Pillow-3.3.0
MBA2014:~ ujpadmin$インストール完了.
selftest.pyを実行
以下のURLにselftest.pyがあるので,取得する.(小さいのでコピペでも大丈夫.)
https://github.com/python-pillow/Pillow/blob/master/selftest.py
実行する.
MBA2014:ShellTest ujpadmin$ 🆑python selftest.py |head -n 16 -------------------------------------------------------------------- Pillow 3.3.0 TEST SUMMARY -------------------------------------------------------------------- Python modules loaded from /usr/local/lib/python2.7/site-packages/PIL Binary modules loaded from /usr/local/lib/python2.7/site-packages/PIL -------------------------------------------------------------------- --- PIL CORE support ok --- TKINTER support ok --- FREETYPE2 support ok --- LITTLECMS2 support ok🈁 --- WEBP support ok --- JPEG support ok --- OPENJPEG (JPEG2000) support ok🈁 --- ZLIB (PNG/ZIP) support ok --- LIBTIFF support ok -------------------------------------------------------------------- MBA2014:ShellTest ujpadmin$
openjpegとlittlecms2も認識されている.
easy_install -U blockdiagでアップグレード
ここまでの作業で日時が空いたので,一応アップグレード対象が無いか確認.
MBA2014:~ ujpadmin$ 🆑easy_install -U blockdiag Searching for blockdiag Reading https://pypi.python.org/simple/blockdiag/ Best match: blockdiag 1.5.3 Processing blockdiag-1.5.3-py2.7.egg Adding blockdiag 1.5.3 to easy-install.pth file Installing blockdiag script to /usr/local/bin
Using /usr/local/lib/python2.7/site-packages/blockdiag-1.5.3-py2.7.egg Processing dependencies for blockdiag Finished processing dependencies for blockdiag🈁 MBA2014:~ ujpadmin$
環境を確認
コマンドパスを確認
MBA2014:~ ujpadmin$ 🆑which blockdiag /usr/local/bin/blockdiag MBA2014:~ ujpadmin$
Pythonのバージョンを確認.
MBA2014:~ ujpadmin$ 🆑python --version Python 2.7.11🈁 MBA2014:~ ujpadmin$
ダイアグラムを作成
次のようなダイアログ定義ファイルを作成.
MBA2014:~ ujpadmin$ 🆑cat simple.diag
blockdiag {
AAA -> BBB -> CCC
-> BBB -> DDD
AAA -> XXX -> ZZZ
AAA -> XXX
}
MBA2014:~ ujpadmin$ダイアグラムを作成.
MBA2014:~ ujpadmin$ 🆑blockdiag simple.diag MBA2014:~ ujpadmin$
作成されたファイルを確認する.
MBA2014:~ ujpadmin$ 🆑ls -lah simple.png -rw-r--r--@ 1 ujpadmin staff 5.7K 6 29 14:11 simple.png🈁 MBA2014:~ ujpadmin$
ダイアグラムのサイズを指定して実行.
MBA2014:~ ujpadmin$ 🆑blockdiag simple.diag -o AAA.png --size=320x240 MBA2014:~ ujpadmin$
MBA2014:~ ujpadmin$ 🆑ls -lah AAA.png -rw-r--r-- 1 ujpadmin staff 6.1K 6 29 14:13 AAA.png MBA2014:~ ujpadmin$
| Page Info | |
|---|---|
| Page Name : | blockdiag |
| Page aliases : | None |
| Page owner : | shinnai |
| Can Read | |
| Groups : | All visitors |
| Users : | All visitors |
| Can Edit | |
| Groups : | No one |
| Users : | ujpblog, administrator |

