【问题标题】:python2 code get error when using python3.5 [duplicate]使用python3.5时python2代码出错[重复]
【发布时间】:2017-03-11 12:15:55
【问题描述】:
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_options 中 AttributeError: '_Environ' 对象没有属性 'has_key'

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

【问题讨论】:

标签: python


【解决方案1】:

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

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

【讨论】:

  • os.environ是什么意思?关于环境变量 PYTHONXCPREFIX?
  • @user1450650 os.environ 是一个包含系统中所有环境变量的字典。
【解决方案2】:

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)

【讨论】:

    猜你喜欢
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 2016-12-25
    • 2022-01-11
    • 2013-07-13
    • 1970-01-01
    相关资源
    最近更新 更多