我最近升级到python 3.4以使用连续体工具,但我的许多脚本都是为2.7编写的。这可能会导致一些错误;有些很简单(例如" print"现在需要括号),但其他更复杂:
if struct.unpack("h", "\0\1")[0] == 1:
defs.append(("WORDS_BIGENDIAN", None))
产生错误:
File "setup.py", line 302, in build_extensions
if struct.unpack("h", "\0\1")[0] == 1:
TypeError: 'str' does not support the buffer interface
有没有办法像C ++一样运行我的python代码2.x(-std = c ++ 11等)?如果我解决这个错误,可能会出现更多错误。谢谢!
答案 0 :(得分:1)
如果您安装了多个版本,则可以更改python脚本的第一行以显式使用2.x或3.x:
对于python 2.x脚本:
#!/usr/bin/env python2
或者,对于python 3.x脚本:
#!/usr/bin/env python3
答案 1 :(得分:0)
Python 3实际上是一种与Python 2不同的语言。没有办法让Python 3解释器运行Python 2代码(除非该代码没有碰巧使用任何已更改的功能) )。
您可能需要阅读Python文档中的guide to porting to Python 3。以下是对当前建议的简要总结:
2to3
工具翻译大部分代码,然后手动修复任何代码错过了。如果您以前没有使用过Python 3,那么有很多文档可以解释版本之间的变化。six
和from future
等库来帮助你将代码移植到一个公共代码库中两个版本的Python的子集。 2to3
和modernize
等其他工具可以帮助您找到可以改进的地方。请注意,如果您放弃对旧版Python 2的支持,则可以更轻松地完成此工作。