idf_py: fix the ESPPORT environ variable type issue
Python 2 expect the environ variables are all of type 'str', but sometimes wrong 'unicode' type is given. Here we force all variables that are not str to become str.
This commit is contained in:
parent
3c44ab4192
commit
cff1815177
1 changed files with 7 additions and 0 deletions
|
@ -77,6 +77,13 @@ def run_tool(tool_name, args, cwd, env=dict()):
|
||||||
env_copy = dict(os.environ)
|
env_copy = dict(os.environ)
|
||||||
env_copy.update(env)
|
env_copy.update(env)
|
||||||
|
|
||||||
|
if sys.version_info[0] < 3:
|
||||||
|
# The subprocess lib cannot accept environment variables as "unicode". Convert to str.
|
||||||
|
# This encoding step is required only in Python 2.
|
||||||
|
for (key, val) in env_copy.items():
|
||||||
|
if not isinstance(val, str):
|
||||||
|
env_copy[key] = val.encode(sys.getfilesystemencoding() or 'utf-8')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Note: we explicitly pass in os.environ here, as we may have set IDF_PATH there during startup
|
# Note: we explicitly pass in os.environ here, as we may have set IDF_PATH there during startup
|
||||||
subprocess.check_call(args, env=env_copy, cwd=cwd)
|
subprocess.check_call(args, env=env_copy, cwd=cwd)
|
||||||
|
|
Loading…
Reference in a new issue