mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Issue #8513: os.get_exec_path() supports b'PATH' key and bytes value.
subprocess.Popen() and os._execvpe() support bytes program name. Add os.supports_bytes_environ flag: True if the native OS type of the environment is bytes (eg. False on Windows).
This commit is contained in:
parent
04b5684d00
commit
b745a74c99
6 changed files with 129 additions and 22 deletions
|
@ -1096,15 +1096,14 @@ class Popen(object):
|
|||
for k, v in env.items()]
|
||||
else:
|
||||
env_list = None # Use execv instead of execve.
|
||||
executable = os.fsencode(executable)
|
||||
if os.path.dirname(executable):
|
||||
executable_list = (os.fsencode(executable),)
|
||||
executable_list = (executable,)
|
||||
else:
|
||||
# This matches the behavior of os._execvpe().
|
||||
path_list = os.get_exec_path(env)
|
||||
executable_list = (os.path.join(dir, executable)
|
||||
for dir in path_list)
|
||||
executable_list = tuple(os.fsencode(exe)
|
||||
for exe in executable_list)
|
||||
executable_list = tuple(
|
||||
os.path.join(os.fsencode(dir), executable)
|
||||
for dir in os.get_exec_path(env))
|
||||
self.pid = _posixsubprocess.fork_exec(
|
||||
args, executable_list,
|
||||
close_fds, cwd, env_list,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue