UJP - 技術情報2 : blockdiagをインストールしてチャートをコマンドから作成 [blockdiag]

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Page Top

はじめに anchor.png

 blockdiagは,テキストで定義した情報を元に,チャートを作成してくれるツール.これをbrewからインストールして,実際にチャートを作ってみるところまで作業する.blockdiag自体はPythonで作られているので,その環境も作ることに.

Page Top

インストール事前確認 anchor.png

 依存関係のある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$
Page Top

パッケージのインストール anchor.png

 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が入って無いとログされている.

Page Top

openjpegとlittle-cms2をインストール anchor.png

 まずはライブラリを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もインストールされた.

Page Top

Pillowの再インストール anchor.png

 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$

 インストール完了.

Page Top

selftest.pyを実行 anchor.png

 以下の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も認識されている.

Page Top

easy_install -U blockdiagでアップグレード anchor.png

 ここまでの作業で日時が空いたので,一応アップグレード対象が無いか確認.

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$
Page Top

環境を確認 anchor.png

 コマンドパスを確認

MBA2014:~  ujpadmin$ 🆑which blockdiag
/usr/local/bin/blockdiag
MBA2014:~ ujpadmin$

 Pythonのバージョンを確認.

MBA2014:~  ujpadmin$ 🆑python --version
Python 2.7.11🈁
MBA2014:~ ujpadmin$
Page Top

ダイアグラムを作成 anchor.png

 次のようなダイアログ定義ファイルを作成.

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$

Front page   Freeze Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 2681, today: 1, yesterday: 1
Princeps date: 2017-12-04 (Mon) 23:36:05
Last-modified: 2016-07-12 (Tue) 23:22:34 (JST) (3659d) by shinnai(shinnai)

広告スペース
Google