代码从Python 2.6更改为3.x.

Rem*_*mko 0 python python-3.x

我试图让pywbem在Python 3.2中工作(它在2.6中运行正常)但是在mof_compiler.py中的这部分代码上构建失败:

  File "pywbem-0.7.0\mof_compiler.py", line 1341
    print s
          ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

它是一个宏,定义如下:

def _print_logger(s):
    print s
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这是无效的,请解释如何在Python 3.2中做同样的事情.

注意:我对Python几乎没有经验.

PS:我已经对3.2的代码做了一些小改动,比如改变

except CIMError, ce:
Run Code Online (Sandbox Code Playgroud)

except CIMError as ce:
Run Code Online (Sandbox Code Playgroud)

根据Lennart Regebro的回答,我发现了其他一些变化(将它们置于此处,因为它可能对其他人有用).

exec "import %s as lextab" % tabfile -> exec ("import %s as lextab" % tabfile)
raise ValueError,"Expected a string" -> raise ValueError("Expected a string")
Run Code Online (Sandbox Code Playgroud)

Len*_*bro 6

这不是一个宏,它是一个函数定义,而在Python 3中,print语句现在是一个函数.所以要做print(s).

Python 2和Python 3之间的变化列表如下:http://docs.python.org/release/3.0.1/whatsnew/3.0.html 它不是那么容易阅读,但我不知道是否有一个更好的在线(虽然存在书籍).

如果您打算使用Python 3,那么获得Python 3书籍可能会很有用.现在有几个.或者至少参考Python 3文档:http://docs.python.org/release/3.2/它有一个不错的教程.