はじめに
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$