macOS に Uniconvertor (ver 1.x) をインストールする
スポンサーリンク
何の因果かわかりませんが、微妙な時期に絶妙にマイナーなユーティリティのインストールについてのエントリを書いております。
どうやらInkscapeのエクステンションの中にこいつを要求するものがあるらしい。そして以前のmacOS向けパッケージにはバンドルされていたそうで。
そしてmacOS向けのバイナリは配布されていなし、MacPortsにもない…。
[2017/02/16 追記]
InkscapeのソースコードにMacPorts用のPortfileが含まれているのでそれを使う方が楽でした。
なんとも微妙な気分です。
ソースファイルを展開したディレクトリの、下記のファイルを適当なディレクトリにコピーし、あとはMacPorts側の設定を変更してやればいけるはず。
packaging/macosx/ports/python/py-uniconvertor/Portfile
[追記ここまで]
手順は基本的に以下のサイトを参考にする。
How to install Uniconvertor (command-line app) on Mac OS 10.7.2 (Lion)? - Super User
というかほとんどそのままです。
準備
まず必要なファイルを入手してくる。
- uniconvertor-1.1.5.tar.gz
- uniconvw-1.1.5.tar.gz
- sk1libs-0.9.1.tar.gz
依存パッケージをインストール。freetype2 など色々と必要なようだがInkscapeビルドするための依存パッケージをインストールすればほとんど揃っているはずなので省略。
Inkscapeが要求するのはlcms2
だけどUniconvertorが要求するのはlcms
。
$ sudo port install lcms
MacPorts と Python
面倒なことに、OS標準のPython 2.7と、MacPortsのPython 2.7の両方が存在している。他のライブラリとの兼ね合いからすると、MacPorts側でないと不都合がある。
そのため、明示的にMacPorts側のPythonを呼び出す。
MacでPython環境を作る時に気をつける事 - Qiita
上記のページを参考に、それぞれインクルードパスとインストール先を確認する。
OS標準のPython の場合
$ which python /usr/bin/python
インクルードパス:
$ /usr/bin/python -c "import site; print(site.getsitepackages())" ['/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python', '/Library/Python/2.7/site-packages']
モジュールのインストール先:
$ /usr/bin/python -c "import distutils.sysconfig as s; print(s.get_python_lib())" /Library/Python/2.7/site-packages
MacPorts (Python 2.7)の場合
$ which python2.7 /opt/local/bin/python2.7
インクルードパス:
$ /opt/local/bin/python2.7 -c "import site; print(site.getsitepackages())" ['/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python']
モジュールのインストール先:
$ /opt/local/bin/python2.7 -c "import distutils.sysconfig as s; print(s.get_python_lib())" /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
ビルドとインストール
Pythonのライブラリによくあるsetup.py
によるインストール。
アンインストール用のタスクのようなものは存在しないみたいなので、削除する場合は手作業。
sk1libs
いつも通りソースを展開。
$ tar zxf sk1libs-0.9.1.tar.gz $ cd sk1libs-0.9.1
python2.7
の部分は環境に応じて変更する必要があります。少なくともMacPortsを利用して必要なライブラリをインストールしている場合はOS標準の方ではなく、MacPortsでインストールしたPython 2系を指定。
$ LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include -I/opt/local/include/freetype2" python2.7 setup.py build
問題がなければインストール。
$ sudo python2.7 setup.py install
MacPortsのPython2.7のインクルードパスにインストールするのが目的であるので、最後に以下のように出力されていればOK。
Writing /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sk1libs-0.9.1-py2.7.egg-info
Uniconvertor
同じ要領で。
$ tar zxf uniconvertor-1.1.5.tar.gz $ cd uniconvertor-1.1.5 $ LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include -I/opt/local/include/freetype2" python2.7 setup.py build
ビルドに成功したらインストール。
$ sudo python2.7 setup.py install
動作の検証
実行時にpython-imaging、python-reportlabを要求するので対応するパッケージか代替品をインストールする。
$ sudo port install py27-Pillow $ sudo port install py27-reportlab
インストール先のディレクトリがパスに追加されていないので絶対パスで指定して実行。
$ /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/uniconvertor 変換したいファイル 変換後のファイル名
フォーマットは拡張子で自動判別される。
対応しているフォーマットは本家のサイトへ。
UniConvertor vector graphics translator
なお、PythonのパスがハードコーディングされているのでmacOS標準の方のPythonが呼び出されたりはしない。/usr/local/bin
にシンボリックリンクを作成しておくといいと思う。
uniconvw
GUIのラッパースクリプトらしいです。InkscapeのExtentionからすると不要な気がしますが一応。動くかどうかは試していません。
上記と同じ要領でインストールすればいいはずだが、/usr/share/applications
にディレクトリを作成しようとしてこける。対処法としては
setup.py
の103行目以降の、ハードコーディングされている/usr/share
を/usr/local/share
、またはインストール先ディレクトリに合わせて変更する。
そのほか
注意点など
CorelDRAW(.cdr
)形式のファイルの変換をサポートしていると記載されていますが、新しいバージョンのファイル形式はサポートされていないようです。Googleでfiletype:cdr
としてヒットするファイルで試しても変換不能でした。スタックトレースとともに以下のメッセージで変換できませんでした。
raise SketchLoadError(_("Parsing error: ")+ str(value)) app.events.skexceptions.SketchLoadError: Parsing error: unrecognised file type
また、Inkscapeで作成したSVGファイルについても、モノによっては処理が終了しないケースがあるようです。具体的な条件は良く分かりません。 エラーを吐かずにコマンドプロンプトが帰ってこない状態になります*1。
LInux 向け情報
Ubuntu 16.04 のuniconvertor (python-uniconvertor)は動かないようです。
- Bug #1597322 “necessary sk1libs isn’t packaged” : Bugs : python-uniconvertor package : Ubuntu
- #820748 - uniconvertor: ImportError: No module named sk1libs.utils.fs - Debian Bug report logs
展開したソースに含まれるREADMEなどではプロジェクトのURLが"http://sk1project.org"という記載になっていますが、現在のURLは"http://sk1project.net"です。
なお、現在ダウンロードできるバージョン 1.1.5のLinux向けパッケージはUbuntu 10向けだったりとても古いです。
最新版について
どうやら2.0のリリース候補(RC)版が存在するようです。
sK1 2.0 (ex.PrintDesign) vector graphics editor
Only import/export filters are not implemented yet. This functionality will be subject of RC3 milestone.
と書いてあるので、変換フィルタとしては使えなさそう。RCというのはRelease Candidate(リリース候補版)だと思うんですが、重要な機能の入っていないRC版というのも不思議ですがまあ今後に期待、ということで*2。
開発中のバージョンのリポジトリはgithubにあります。READMEによるとプロジェクト名の"sK1 Project"は"K"が大文字だそうです。
- GitHub - sk1project/sk1-wx: sK1 2.0 multiplatform vector graphics editor
- GitHub - sk1project/uniconvertor: UniConvertor is a universal vector graphics translator
- sK1 Project: sK1 2.0 (ex.PrintDesign), sK1, UniConvertor, SWord
カラーパレット
このソフトを開発しているプロジェクトのサイトで各種グラフィック編集ソフト向けにカラーパレットのデータが配布されている。
sK1 Project - Free Palette Collection
カラーパレットの名称をクリックするとダウンロードページに移動する。
まとめ
とりあえず動いたようなので、次はInkscape本体のパッケージ化のリターンマッチです。
確実に言えるのはPythonインタプリタの場所をハードコーディングしている箇所は小細工が必要だろうということです。
何だか無駄に文字数が多い気がしますが、このエントリは以上です。