New submission from Antony Lee <anntzer....@gmail.com>:
As of Py3.8/Linux: In [1]: os.environ["foo"] = Path("bar") --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-4-2827297496cb> in <module> ----> 1 os.environ["foo"] = Path("bar") ~/miniconda3/envs/default/lib/python3.8/os.py in __setitem__(self, key, value) 676 def __setitem__(self, key, value): 677 key = self.encodekey(key) --> 678 value = self.encodevalue(value) 679 self.putenv(key, value) 680 self._data[key] = value ~/miniconda3/envs/default/lib/python3.8/os.py in encode(value) 746 def encode(value): 747 if not isinstance(value, str): --> 748 raise TypeError("str expected, not %s" % type(value).__name__) 749 return value.encode(encoding, 'surrogateescape') 750 def decode(value): TypeError: str expected, not PosixPath In [2]: subprocess.run('echo "$foo"', env={**os.environ, "foo": Path("bar")}, shell=True) bar Out[2]: CompletedProcess(args='echo "$foo"', returncode=0) I guess it would be nice if it was possible to set os.environ entries to Path-like values, but most importantly, it seems a bit inconsistent that doing so is not possible on os.environ, but works when setting the `env` of a subprocess call. ---------- components: Library (Lib) messages: 360750 nosy: Antony.Lee priority: normal severity: normal status: open title: os.environ does not support Path-like values, but subprocess(..., env=...) does versions: Python 3.9 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue39461> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com