2016-10-28 40 views
-2
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’python2代碼在使用python3.5時得到錯誤

沒有任何人有知道如何修改代碼以可行的python3.5

+1

請參閱以下內容:http://stackoverflow.com/questions/40305172/distutilscross-issue-when-install-pyaudio-for-cross-platform/40305503#40305503 –

+0

' 'PYTHONXCPREFIX' 在os.environ '在#2行? – spectras

回答

2

has_key在python3被刪除,但在2要麼你不應該用它來使用in操作:

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

os.environ是什麼意思? 是關於環境var PYTHONXCPREFIX? – user1450650

+0

@ user1450650 os.environ是一個包含系統中所有環境變量的字典。 – levi

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)