inkscapeでエクステンションが動かない。(2019.5.15)
inkscapeのextensionsを動作させようとすると
Can't Spawn!!! spawn returns: Failed to execute child process
なんてエラーが吐き出されて動作しないことがある。
当然py27-lxmlとかpy27-numpyや、pstoeditはインストールされている。
ソースコードを見てみるとエクステンションで使うpythonが
python決め打ちになっているように見受けられる。
inkscape-0.92.4/src/extension/implementation/script.cpp
Script::interpreter_t const Script::interpreterTab[] = {
{"perl", "perl-interpreter", "perl" },
#ifdef WIN32
{"python", "python-interpreter", "pythonw" },
#else
{"python", "python-interpreter", "python" },
#endif
{"ruby", "ruby-interpreter", "ruby" },
{"shell", "shell-interpreter", "sh" },
{ NULL, NULL, NULL }
};
*.inxではスクリプトを動作させるときに使用するプログラムは指定できるはずなんだけどね。
どうも/usr/local/share/inkscape/extentions/にインストールされているものはpythonになっている。
FreeBSD11.2-RELEASEにおいてinkscapeをインストールした場合, /usr/local/share/inkscape/extension/*.pyの中身はすべて/usr/local/bin/python2.7となっている。
python2.7をインストールしたとき/usr/local/bin/python2.7はできても/usr/local/bin/pythonはできない。
結局/usr/local/bin/python2.7を/usr/local/bin/pythonにシボリックリンクすることで対応。
何が原因かと言えば、
- *.inxのinterpreterを書き換えてもpythonを起動しようとする。
- python2.7をインストールしても/usr/local/bin/pythonはインストールされない。
であった。