◐ Shell
clean mode source ↗

Message 74283 - Python tracker

os.exec*() functions doesn't support bytes if the program name doesn't 
use absolute path. The problem is that PATH is used to complete the 
full path but Python3 disallows bytes+str (which is a good thing!). 
Example:

python -c "import os; os.execvp('pwd', 'pwd')"
Traceback (most recent call last):
  ...
  File "/home/haypo/prog/py3k/Lib/os.py", line 328, in execvp
    _execvpe(file, args)
  File "/home/haypo/prog/py3k/Lib/os.py", line 364, in _execvpe
    func(fullname, *argrest)
TypeError: execv() arg 2 must be a tuple or list

Attached patch allows bytes in os.exec*(). It converts each directory 
of PATH using sys.getfilesystemencoding().