blockdiagをインストールしてチャートをコマンドから作成
更新履歴
- 初版 2016/07/12
- 更新日 2017/12/04
はじめに
- 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 callable
Installed /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$

