2

RedHat サーバーで Python ベースの MooseFS CGI サーバーを実行すると、奇妙な構文エラーが発生します。

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 の公式サイトからダウンロードした正しいファイルであり、エラーは見つかりません。私のpythonのバージョンは2.4.3です。

4

2 に答える 2

3

失敗した式は、 Python 2.5で追加されたpython conditional_expressionを使用しています。

最善の策は、サポートされている Python バージョンにアップグレードすることです

于 2012-12-28T09:01:25.313 に答える
2

Abhijitがすでに述べたように、python <2.5では条件式を使用できませんが、これは2つの簡単な方法で回避できます。

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

または:

"~" * (r != rn)

"~"最初のものは考慮されるので安全でTrueあり、したがって、その場合、は成功するr != rnことが保証され、したがって、は2番目の式を評価しません。andor

2つ目は、 (または)を掛けた文字列が文字列自体を返し、(または)を掛けた文字列が1(空の文字列)を返すという事実を使用します。True0False""


編集: エラーは自分の管理下にないファイルによって生成されるため、そのソースコードを変更しないでください。ライブラリがPythonの2.5構文を使用しているという事実は、Python 2.4.3をサポートしておらず、ライブラリを変更するか、Pythonインストールをアップグレードする必要があることを意味します。

python2.4.xは2008年に最後にリリースされたので、pythonインストールをpython2.7.3にアップグレードすることをお勧めします。これで問題が解決し、新しいバージョンのPythonのすべてのメリットが得られます。

于 2012-12-28T09:38:27.857 に答える