STINNER Victor added the comment:

In fact, there is also a clearenv() function which could be used by 
os.environ.clear().

"The clearenv() function clears the environment of all name-value pairs and 
sets the value of the external variable environ to NULL."

It looks like supported names depends a lot on the platform and platform 
version. Extract of Linux manual pages:

setenv:
---
BUGS:

POSIX.1-2001  specifies  that  if  name  contains an '=' character, then 
setenv() should fail with the error EINVAL; however, versions of glibc before 
2.3.4 allowed an '=' sign in name.
---

clearenv:
---
CONFORMING TO

Various  UNIX variants (DG/UX, HP-UX, QNX, ...).  POSIX.9 (bindings for 
FORTRAN77).  POSIX.1-1996 did not accept clearenv() and putenv(3), but changed 
its mind and scheduled these functions for some later issue of this standard 
(cf. B.4.6.1).  However, POSIX.1-2001 adds only putenv(3),  and  rejected 
clearenv().
---

> In any case I think we should wrap unsetenv() in os.environ.clear() so that 
> it should try to remove all environment variables even if some calls of 
> unsetenv() fails.

os.environ.clear() may tries to remove as much keys as possible, but keep keys 
for which unsetenv raised an error and raise a global error in this case.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue20658>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to