SVG ファイルを作成する Python ライブラリ

ちょっと訳あって, SVG ファイルを作成する Python ライブラリを調べています. PyPI から SVG で検索して見付かったライブラリを片っ端から調査していきます.

$ pip search SVG
pygal                     - A python svg graph plotting library
CairoSVG                  - A Simple SVG Converter for Cairo
svg.charts                - Python SVG Charting Library
Cnc25D                    - CAD library for 2.5D parts (including gears) using svgwrite, dxfwrite or FreeCAD as backend
gpml2svg                  - Render GPML pathway markup to SVG from the commandline/Python.
eea.converter             - SVG, PNG, PDF converters using external tools as ImageMagick
svgbatch                  - Loads SVG files into pyglet Batch objects for OpenGL rendering.
svgwrite                  - A Python library to create SVG drawings.
XStatic-svg-edit-moin     - svg-edit-moin 2012.11.27 (XStatic packaging standard)
pysvg                     - Python SVG Library
fullmarks.tinymceplugins.asciisvg - ASCIISvg Plugin for TinyMCE in Plone for drawing a graph of function in SVG
pydirstat                 - Show statistics informations for a directory in HTML, SVG, or Flash.
svgsitemap                - a site map using PyGraphviz and svg
glsvg                     - OpenGL SVG Renderer
sauvage                   - sauvage is a library that helps creating, manipulating and rendering SVG scenes with OpenGL
svglib                    - An experimental library for reading and converting SVG.
qrplatba                  - QR platba SVG QR code and SPAYD string generator
XStatic-svgweb            - svgweb 2011.2.3 (XStatic packaging standard)
pixel2svg                 - pixel2svg - Convert pixel art to SVG
scour                     - Scour SVG Optimizer
svg.path                  - SVG path objects and parser
PyQRCode                  - A QR code generator written purely in python 3 with SVG and PNG output.
simplesvg                 - UNKNOWN
nsi.svgtool               - UNKNOWN
Things                    - A vector animation API using Python, Cairo and Inkscape SVG files. Create quick animations by containment, keyframe tweening and other simple Things. New, one can
                            now export each frame as PNG or SVG files.
pytablefy                 - A python SVG table library
svgobject                 - Object-oriented library for handling SVG drawings
svglue                    - Create templates using Inkscape, then fill them in (and render them to PDF, if you like).
ewscal                    - Render Exchange calendars to SVG using d3.js
svgplotlib                - SVG plotting library
svg2rlg                   - Convert SVG to Reportlab drawing
svgutils                  - Python SVG editor
Charty                    - Another Python SVG Chart Generator that uses CSS smartly
django_svg                - SVG solution for all browsers. PNG versions of the SVG will be asynchrously generated by Batik and presented to browsers that do not support SVG.
collective.pygal.core     - Pygal dynamic SVG charting library integration for plone
pyWxSVG                   - SVG canvas for wxPython

の結果を調べてみた.

SVG ライブラリ
名称 対応 Python バージョン URL ライセンス コメント
(理想) Python 3 N/A オープンソース 開発が続いてること
pygal Python 2.6, 2.7, 3.2, 3.3 https://pypi.python.org/pypi/pygal, http://pygal.org LGPL v3 データを表示するためのものらしい.
CairoSVG Python 2.6, 2.7, 3.2, 3.3 https://pypi.python.org/pypi/CairoSVG, http://cairosvg.org LGPL v3 SVG を他の形式に変換するものらしい.
svg.charts Python 2.6, 2.7. 3 https://pypi.python.org/pypi/svg.charts, http://pythonhosted.org/svg.charts/ MIT グラフ描画用で目的が違う
Cnc25D ? https://pypi.python.org/pypi/Cnc25D/, http://pythonhosted.org/Cnc25D/ GPLv3 or later CNC 用で目的が違う
gpml2svg Python 2 https://pypi.python.org/pypi/gpml2svg/, http://www.genmapp.org BSD 遺伝子地図のなんとからしい. 目的が違い過ぎる
eea.converter ? https://pypi.python.org/pypi/eea.converter GPLv2 PDF を生成するものっぽい. Getting Started の PDF が localhost に置いてある.
svgbatch Python 2.5, 2.6 https://pypi.python.org/pypi/svgbatch BSD SVG ファイルを変換するもの.
svgwrite Python 2.7, 3.2, 3.3 https://pypi.python.org/pypi/svgwrite/, https://bitbucket.org/mozman/svgwrite MIT 求めていた SVG を作成するもの. 最近まで更新されてるので期待.
XStatic-svg-edit-moin ? https://pypi.python.org/pypi/XStatic-svg-edit-moin/2012.11.15.1, https://code.google.com/p/svg-edit/ (svg-edit-moin と一緒, なんのこっちゃ) svg-edit という JS のツールを MoinMoin で使えるようにしたもの (?)
pySVG Python 2.6 https://pypi.python.org/pypi/pysvg, http://codeboje.de/pysvg/ 2 Clause BSD ドキュメントが少なく, ここ最近メンテもされてない.
fullmarks.tinymceplugins.asciisvg ? https://pypi.python.org/pypi/fullmarks.tinymceplugins.asciisvg GPL 関数のグラフを描画するためのものらしい.
pydirstat ? https://pypi.python.org/pypi/pydirstat/0.9.15, http://pydirstat.berlios.de GPL ディレクトリごとの占有してる領域のサイズを SVG などで綺麗に表示してくれる. diskring や
svgsitemap ? https://pypi.python.org/pypi/svgsitemap, http://k0s.org/map.svg ? サイトマップを SVG で表示するもの
glsvg ? https://pypi.python.org/pypi/glsvg, https://github.com/fathat/glsvg Public Domain OpenGL を使って表示するらしい. SVG の読み書きができるらしい. Github の更新は最近無い.
sauvage ? https://pypi.python.org/pypi/sauvage, http://lii-enac.fr/~conversy/research/sauvage/ LGPL OpenGL を使って表示するらしい. サンプル画像とか載ってていい感じ. ただし, alpha 状態とのこと. PyPI にダウンロードリンクが無い!
svglib ? https://pypi.python.org/pypi/svglib/ LGPLv3 SVG を PDF に変換するもの. 残念. きちんと整備されている感じ. 最近の更新は無い.
qrplatba Python 2.7, 3.3 https://pypi.python.org/pypi/qrplatba MPL 2.0 QR コードを生成するためのもの.
XStatic-svgweb ? https://pypi.python.org/pypi/XStatic-svgweb, https://code.google.com/p/svgweb/ (svgweb と同じ) HTML に組み込んでブラウザ上で SVG を扱うもの. JS で動いてるらしい. 今回の目的とは違う.
pixel2svg Python 2.x https://pypi.python.org/pypi/pixel2svg, http://florian-berger.de/en/software/pixel2svg/ GPL ピクセル画像を SVG に変換するもの. もちろんピクセルのまま.
scour ? https://pypi.python.org/pypi/scour, http://www.codedread.com/scour/, https://github.com/oberstet/scour Apache 2.0 SVG を綺麗にしてファイルサイズを小さくするもの. scour = ゴシゴシ洗う
svg.path Python 2.6, 2.7, 3.1, 3.2, 3.3 https://pypi.python.org/pypi/svg.path, https://github.com/regebro/svg.path CC0 1.0 Universal 線 (path) しか引けないっぽい.
PyQRCode Python 3 https://pypi.python.org/pypi/PyQRCode, https://github.com/mnooner256/pyqrcode LGPLv3 名前の通り QR コードを生成するものらしい.
simplesvg ? https://pypi.python.org/pypi/simplesvg, https://github.com/forana/simplesvg ? pySVG と svgwrite では満足できないところがあって作ったらしい. 基本的な図形は描けそう.
nsi.svgtool ? https://pypi.python.org/pypi/nsi.svgtool GPL やる気が感じられない……
Things Python 2.5 https://pypi.python.org/pypi/Things, http://savannah.nongnu.org/projects/things/ GPL やりたいこととすごく合ってるのだが, どうももう更新されていないっぽい.
pytablefy ? https://pypi.python.org/pypi/pytablefy, https://github.com/fayizk1/pytablefy ? いまいち何ができるか分からない
svgobject ? https://pypi.python.org/pypi/svgobject GPL ドキュメントが少なくて何ができるかよく分からなかった.
svglue ? https://pypi.python.org/pypi/svglue MIT Inkscape と連携するもの? っぽい. 関係無さそう.
ewscal ? https://pypi.python.org/pypi/ewscal MIT d3.js とある辺りで関係無さそう.
svgplotlib ? https://pypi.python.org/pypi/svgplotlib, BSD グラフのプロットは目的ではない.
svg2rlg ? https://pypi.python.org/pypi/svg2rlg BSD SVG から別形式への変換なので関係無い.
svgutils Python 2.6, 2.7 https://pypi.python.org/pypi/svgutils, https://github.com/btel/svg_utils, http://neuroscience.telenczuk.pl/?p=331 MIT どうも SVG の結合の方を指向しているようで, 今回とは関係無い.
Charty ? https://pypi.python.org/pypi/Charty ? チャートが目的ではないので関係無い.
django_svg ? https://pypi.python.org/pypi/django_svg MIT SVG の代わりに PNG で表示するツールらしい.
collective.pygal.core Python 2 https://pypi.python.org/pypi/collective.pygal.core, https://github.com/collective/collective.pygal.core GPL pygal の Plone 版らしい.
pyWxSVG Python 2.5 https://pypi.python.org/pypi/pyWxSVG, http://shanto.ru (露語?) BSD wxPython 用なので関係無さそう.

色々調べてみて, 目的, できることが明示されていたり, デモ画像が見られるものは興味を惹かれますね. Python バージョンが明記してあるものは安心して使えます. ライセンスが明記してないと, どう仕様ライブラリのライセンスをどう処理していいか分からないので困ります.

結論としては, 任意の SVG ファイルを作成するなら svgwrite がほぼ唯一の選択肢のようです.

とりあえず SVG の調査はここまでとします.