使用python3.5时python2代码获取错误

时间:2016-10-28 15:00:58

标签: python

def finalize_options(self):
    if self.cross_compile and os.environ.has_key('PYTHONXCPREFIX'):
        prefix = os.environ['PYTHONXCPREFIX']
        sysconfig.get_python_lib = get_python_lib
        sysconfig.PREFIX = prefix
        sysconfig.EXEC_PREFIX = prefix
        # reinitialize variables
        sysconfig._config_vars = None
        sysconfig.get_config_var("LDSHARED")

    _build.finalize_options(self)

上面的代码在python3.5上运行时会出错。 错误是: crossize_py",第16行,在finalize_options中 AttributeError:' _Environ'对象没有属性' has_key'

有没有人知道如何修改代码以便在python3.5中使用?

2 个答案:

答案 0 :(得分:3)

在python3中删除了

has_key,但你也不应该在2中使用它。使用in运算符:

if self.cross_compile and 'PYTHONXCPREFIX' in os.environ:

答案 1 :(得分:1)

has_key() was removed in Python 3.x.  使用inget

'PYTHONXCPREFIX' in os.environ

使用get

os.environ.get('PYTHONXCPREFIX')。如果不存在则返回None。

它也可以返回False,并将其作为默认值传递。

os.environ.get('PYTHONXCPREFIX', False)