UJP - 技術情報1

Life is fun and easy!

不正IP報告数

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

blockdiagをインストールしてチャートをコマンドから作成

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$

広告スペース
Google