Nick Coghlan <[email protected]> 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 <[email protected]>
<http://bugs.python.org/issue14208>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com