Retrieving the full command line

Tim Golden mail at
Tue Jan 22 16:07:18 CET 2013

On 22/01/2013 14:53, Terry Reedy wrote:
> On 1/22/2013 4:24 AM, Tim Golden wrote:
>> [Python 2.7/3.3 (and hg tip) running on Windows. Not Windows-specific,
>> though].
>> I use the python -mpackage incantation to run a package which has a
>> module and which uses relative imports internally.
>> I'm developing under cherrypy which includes a reloader for development.
>> The reloader attempts to rebuild the original
>> command line by combining sys.executable and sys.argv and then does an
>> execv.
>> There does not appear to be any way within Python of determining the
>> command line I used. The combination of sys.executable and sys.argv in
>> this case will look like: "c:\python33\python.exe app/". But
>> running this precludes the use of package-relative imports.
> If I understand right, the reloader should be updated to translate
> 'x/' to '-m x'. Filenames of form'__x__' are reserved, in a
> sense, like similar identifiers in programs, and '' should
> not be used for a file meant to executed directly.

To be clear: it's Python itself, not the reloader, which is coming up
with sys.executable is "c:\python33\python.exe" and
sys.argv is ['c:\path\to\'] for a program which has been
started by "c:\python33\python.exe -mpath\to".

Obviously, there is any number of ways around this specific issue,
including what you suggest: a canonical rewrite of "python
path\to\" into "python -mpath\to". But it's not clear to me
that this rewrite should be the responsibility of calling code.


More information about the Python-list mailing list