关于python:python2代码在使用python3.5时出错

python2 code get error when using python3.5

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
10
11
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上运行时得到错误。错误是:crosscompile.py",第16行,在finalize_选项中attributeError:''u environn'对象没有属性'has'u key'

有人知道如何在python3.5中修改代码以使其可用吗?


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

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


在python 3.x中删除了_key()。使用inget

1
'PYTHONXCPREFIX' in os.environ

使用get

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

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

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