При импорте matplotlib2tikz возникает ошибка синтаксиса: неверный синтаксис - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть небольшой скрипт на python (python 2.7), в котором я хочу использовать matplotlib2tikz для генерации tex-файлов для моих графиков.

Я пытаюсь импортировать модуль как:

import matplotlib2tikz

Когда я запускаю скрипт, я сразу же получаю следующую ошибку (она не работает при импорте):

```
Traceback (most recent call last):
File "./get_violinplot.py", line 3, in <module>
import matplotlib2tikz
File "/x/.local/lib/python2.7/site- 
packages/matplotlib2tikz/__init__.py", line 16, in <module>
from matplotlib2tikz.save import get_tikz_code, save
File "/x/.local/lib/python2.7/site- 
packages/matplotlib2tikz/save.py", line 238
def save(filepath, *args, encoding=None, **kwargs):
                                 ^
SyntaxError: invalid syntax
```

После некоторого быстрого поиска у меня сложилось впечатление, что это может быть связано с тем, как в системе устанавливаются языковые стандарты (новая установка Ubuntu 16.04). После их генерации вручную вывод команды $ locale в терминале показывает следующее:

```
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
```

Есть идеи, как это исправить?

Спасибо!

Ответы [ 2 ]

1 голос
/ 07 апреля 2019

Аргументы функции сохранения объявлены так, что Python2 не поддерживает.

Работает на Python 3.

Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> def function(filepath, *args, encoding=None, **kwargs):
...   pass
...
>>>
0 голосов
/ 16 апреля 2019

У меня была такая же проблема, так как я использую Python2. Однако я пошел к исходному коду и просто поменял порядок «* args» и «encoding = None» в определении функции save (строка 256 в save.py). Для моей цели это решило проблему.

...