2016-10-28 4 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で実行するとエラーが発生します。 エラーは次のとおりです。finalize_options はAttributeErrorで crosscompile.py」、16行目、 『_environ』オブジェクトが属性 『has_key』を持っていないpython3.5を使用するとpython2コードがエラーになる

は、誰もがpython3.5で実行可能にコードを変更する方法のアイデアを持っていない

+1

以下を参照してください:はos.environでhttp://stackoverflow.com/questions/40305172/distutilscross-issue-when-install-pyaudio-for-cross-platform/40305503#40305503 –

+0

' 'PYTHONXCPREFIX' '2行目? – spectras

答えて

2

has_key はのpython3で削除されていますが、いずれか2にそれを使用するべきではありませんin演算子を使用します。

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

os.environの意味は何ですか? は環境変数PYTHONXCPREFIXについてですか? – user1450650

+0

@ user1450650 os.environは、システムのすべての環境変数を含む辞書です。 – levi

1

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

os.environ.get('PYTHONXCPREFIX')を使用して0

'PYTHONXCPREFIX' in os.environ 

。存在しない場合はNoneを返します。

Falseも返して、デフォルト値として渡すことができます。

os.environ.get('PYTHONXCPREFIX', False) 
関連する問題