Изменение интерпретатора Python для Inkscape - PullRequest
0 голосов
/ 27 августа 2018

Я продолжаю получать сообщения об ошибках при использовании Inkscape, которые, кажется, подразумевают, что ожидание Python 2 против 3 не оправдывается, хотя у меня установлены оба. Например, когда я пытаюсь создать новый документ, сгенерированный из шаблона, я получаю,

Traceback (most recent call last):
  File "empty_generic.py", line 82, in <module>
    c.affect()
  File "/usr/share/inkscape/extensions/inkex.py", line 285, in affect
    self.output()
  File "/usr/share/inkscape/extensions/inkex.py", line 272, in output
    self.document.write(sys.stdout)
  File "src/lxml/lxml.etree.pyx", line 2033, in lxml.etree._ElementTree.write (src/lxml/lxml.etree.c:63667)
  File "src/lxml/serializer.pxi", line 524, in lxml.etree._tofilelike (src/lxml/lxml.etree.c:134877)
  File "src/lxml/lxml.etree.pyx", line 324, in lxml.etree._ExceptionContext._raise_if_stored (src/lxml/lxml.etree.c:10737)
  File "src/lxml/serializer.pxi", line 441, in lxml.etree._FilelikeWriter.write (src/lxml/lxml.etree.c:133581)
TypeError: write() argument must be str, not bytes

, где последняя строка выглядит именно так, как я сказал - обычно эта ошибка вызвана запуском кода Python 2 с интерпретатором Python 3 и может быть исправлена ​​просто передачей строкового объекта str как str.decode() или чем-то еще. Очевидно, что редактирование исходного кода inkscape не является идеальным решением.

Кроме того, при попытке создать диаграмму Вороного я получаю

Traceback (most recent call last):
  File "voronoi2svg.py", line 36, in <module>
    import simplepath
  File "/usr/share/inkscape/extensions/simplepath.py", line 51
    raise Exception, 'Invalid path data!'
                   ^
SyntaxError: invalid syntax

, что снова кажется очевидной ошибкой 2 против 3.

Есть ли способ изменить интерпретатор Python, используемый Inkscape?

1 Ответ

0 голосов
/ 28 августа 2018

Я действительно нашел ответ на свой вопрос на самом сайте Inkscape здесь :

Если ваша операционная система (например, ваш дистрибутив Linux) использует версию Python по умолчанию (или Perl, Ruby и т. Д.), Отличную от той, которая требуется для расширений Inkscape, обратитесь к разделу «Интерпретаторы расширений», чтобы узнать, как настроить интерпретатор, который будет использовать Inkscape. использовать. Наиболее распространенным примером этого является то, что версия операционной системы Python по умолчанию - 3, но Inkscape требует Python2, в результате чего все расширения выдают ошибку.

который ведет на эту страницу , где написано:

Выбор конкретной версии переводчика (через файл настроек) Файл Preferences.xml, пользователь может установить конкретный исполняемый файл интерпретатор, который Inkscape должен использовать для выполнения расширений определенный тип.

Это особенно полезно, если системная версия по умолчанию Интерпретатор несовместим с тем, который используется расширением Inkscape подсистема (например, расширения Inkscape, которые полагаются на inkex.py только работать с Python 2 (начиная с Inkscape 0.92.1), в то время как на некоторых последних Linux дистрибутивы, используемая по умолчанию версия Python - это Python 3, который приводит к ошибкам при выполнении расширений).

Чтобы изменить исполняемый файл, который будет использоваться для запуска расширений скрипта, на значение, отличное от значения по умолчанию в приведенной выше таблице, вам нужно сделать следующее:

выход из всех запущенных процессов Inkscape. Откройте файл perferences.xml. с помощью текстового редактора (найдите точное местоположение файла, перейдя в Правка -> Настройки -> Система: Настройки пользователя) поиск группы который содержит настройки для самой системы расширения и опций различные расширения:

<group
 id="extensions"
 …
 org.ekips.filter.gears.teeth="24"
 org.ekips.filter.gears.pitch="20"
 org.ekips.filter.gears.angle="20" />

Вставьте ключ для интерпретатора, например, «python-interpreter» для установка программы, которая должна использоваться для запуска расширений Python, и установить строку в абсолютный путь к двоичному файлу Python, который совместим с текущими скриптами расширения Inkscape (в примере ниже путь "/usr/bin/python2.7". Это будет выглядеть по-другому на Системы Windows.):

<group
 id="extensions"
 python-interpreter="/usr/bin/python2.7"
 …
 org.ekips.filter.gears.teeth="24"
 org.ekips.filter.gears.pitch="20"
 org.ekips.filter.gears.angle="20" />

Сохраните файл настроек и запустите Inkscape для проверки расширений.

...