Nick Coghlan <ncogh...@gmail.com> added the comment:

This is closely related to PEP 395, since multiprocessing currently hits the 
same issue in trying to figure out the correct setting for sys.argv0.

I quite like the sys.__argv__ idea for preserving the *exact* underlying 
command line (Alex Gaynor was recently asking for something similar to this).

In the meantime, it should be possible to work around the problem by running 
the affected subprocess invocations (i.e. when __main__.__package__ exists and 
is not empty) with something like:

    launch_template = """
    import runpy, sys
    sys.argv[:] = {argv}
    sys.path[:] = {path}
    runpy._run_module_as_main({main})
    """
    import sys, subprocess, os.path, __main__
    main_base = os.path.basename(__main.__file__).splitext()[0]
    main_ref = __main__.__package__ + "." + main_base
    launch = launch_template.format(argv=sys.argv, path=sys.path, main=main_ref)
    subprocess.call(launch, shell=True, executable=sys.executable)
   
Note: the above isn't tested code, since it's an approach that only occurred to 
me recently and I haven't had a chance to fully explore it myself. However, if 
it works, we could make use of it in 2.7 and 3.2 to fix multiprocessing's 
current misbehaviour on Windows.

----------

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

Reply via email to