跑多个蟒蛇

时间:2014-12-03 16:35:48

标签: python linux software-distribution

我最近升级到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等)?如果我解决这个错误,可能会出现更多错误。谢谢!

2 个答案:

答案 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。以下是对当前建议的简要总结:

  • 如果您从现在开始只需要支持Python 3(您不需要保持Python 2的兼容性),请使用2to3工具翻译大部分代码,然后手动修复任何代码错过了。如果您以前没有使用过Python 3,那么有很多文档可以解释版本之间的变化。
  • 如果您正在编写新代码并且需要能够使用两个Python版本运行它,请编写Python 3(或2和3的公共子集)并根据需要向Python 2反向运行。
  • 如果你有一个现有的Python 2代码库并且想要在Python 3上运行它而不破坏Python 2兼容性,那么使用sixfrom future等库来帮助你将代码移植到一个公共代码库中两个版本的Python的子集。 2to3modernize等其他工具可以帮助您找到可以改进的地方。请注意,如果您放弃对旧版Python 2的支持,则可以更轻松地完成此工作。
相关问题