SyntaxError: неверный синтаксис в mfs.cgi

Я запускаю MooseFS CGI Server на основе Python на своем сервере RedHat, и получаю странную синтаксическую ошибку:

Traceback (most recent call last):
    File "/usr/sbin/mfscgiserv", line 300, in run_cgi
    execfile(self.file_name)
File "/usr/share/mfscgi/mfs.cgi", line 129
    return "%s%.1f%s" % (("~" if n != rn else ""),rn,s)
                            ^
SyntaxError: invalid syntax

Это просто правильный файл, загруженный с официального сайта moosefs, и я не могу найти никакой ошибки по этому поводу. Версия моего питона 2.4.3.

2 ответа

Решение

Как уже сказал Абхиджит, вы не можете использовать условное выражение в python<2.5, но вы можете обойти это двумя простыми способами:

(r != rn and "~") or ""

Или же:

"~" * (r != rn)

Первый безопасен, потому что "~" Считается True и, таким образом, если r != rn тогда гарантируется, что and будет успешным и, таким образом, or не будет оценивать второе выражение.

Второй использует тот факт, что строка умножается на 1(или же True) возвращает саму строку, а строка умножается на 0(или же False) возвращает ""(пустая строка).


Изменить: так как ошибка генерируется файлом, который не находится под вашим контролем, вы не должны изменять его исходный код. Тот факт, что библиотека использует синтаксис Python 2.5, просто означает, что она не поддерживает Python 2.4.3, и вам нужно либо изменить библиотеку, либо обновить установку Python.

Так как python2.4.x был последний раз выпущен в 2008 году, я думаю, что было бы неплохо обновить вашу установку python до python2.7.3. Это должно решить вашу проблему, и вы получите все преимущества новой версии Python.

Сбой выражения использует python conditional_expression, который был добавлен в Python 2.5.

Лучше всего перейти на поддерживаемую версию Python

Другие вопросы по тегам