[Python-Dev] Issue 13524: subprocess on Windows (original) (raw)
Martin Packman martin.packman at canonical.com
Sun Dec 4 17:48:16 CET 2011
- Previous message: [Python-Dev] Issue 13524: subprocess on Windows
- Next message: [Python-Dev] Issue 13524: subprocess on Windows
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 04/12/2011, Tim Golden <mail at timgolden.me.uk> wrote:
Someone raised issue13524 yesterday to illustrate that a subprocess will crash immediately if an environment block is passed which does not contain a valid SystemRoot environment variable. ... 2) Add a doc warning (ironically, considering the recent to-and-fro on doc warnings in this very module).
There appears to already be such a warning, added because of a similar earlier bug:
<http://bugs.python.org/issue3440>
Really this is a problem with the subprocess api making a common case harder to do than necessary. If you read the documentation, you'll get it right, but that's not ideal:
<http://sourcefrog.net/weblog/software/aesthetics/interface-levels.html>
From the bug, the problem with the reporter's code is he passes a dict with the one value he cares about as
env
to subprocess.Popen without realising that it will prevent the inheriting of the current environment. Your suggested fix for him also has an issue, it changes the environment of the parent process without resetting it. Instead you need something like:
e = dict(os.environ)
e['PATH_TO_MY_APPS'] = "path/to/my/apps"
The bzrlib TestCase has a method using subprocess that provides an
env_changes
argument. With that, it's much easier to override or
remove just one variable without accidentally clearing the current
environment.
Martin
- Previous message: [Python-Dev] Issue 13524: subprocess on Windows
- Next message: [Python-Dev] Issue 13524: subprocess on Windows
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]