Python launcher (PEP 397) and emacs python-mode.el

T

Thomas Heller

Has someone managed to patch python-mode.el to use
the PEP 397 python launcher when you hit C-c C-c?

It seems that emacs should parse the shebang line in the edited
python script and pass the corresponding arguments to py.exe.

Thomas
 
A

Andreas Röhler

Am 31.01.2013 10:03, schrieb Thomas Heller:
Has someone managed to patch python-mode.el to use
the PEP 397 python launcher when you hit C-c C-c?

It seems that emacs should parse the shebang line in the edited
python script and pass the corresponding arguments to py.exe.

Yes, that's the way python-mode.el acts by default.

AFAIU that launcher is implemented in Python3.3 and should not need any patch at all.
Should it not work, please file a bug-report at

https://bugs.launchpad.net/python-mode

Andreas
 
T

Thomas Heller

Am 31.01.2013 12:05, schrieb Andreas Röhler:
Am 31.01.2013 10:03, schrieb Thomas Heller:

Yes, that's the way python-mode.el acts by default.

AFAIU that launcher is implemented in Python3.3 and should not need any
patch at all.
Should it not work, please file a bug-report at

https://bugs.launchpad.net/python-mode

Well, let me make these remarks:

1. I'm on Windows, using gnu-emacs 24.2.1, and python-mode.el 6.1.0.
I do not understand how the shebang line is used by python-mode.el,
depending on what I write into it either 'python.exe' is started when
I hit C-c C-c, or I get 'Spawning child process: invalid argument'.
The latter occurs most often when the shebang string contains 'jython'.


2. I would like to use the PEP 397 python launcher to start the python
version that is specified in the shebang line.
The python launcher py.exe parses this line when I run 'py script.py',
and then starts the corresponding python interpreter version.
The launcher parses the shebang line by its own rules (see pep397 for
exact details). One example is this:

<script>
#!/usr/bin/python3.1-32
import sys; print(sys.version)
</script>

The python launcher starts 'c:\Python31\python.exe -3.1-32 script.py'.

I would like emacs to do the same; however this would require emacs
to do the same shebang line parsing as the launcher does.

Thomas
 
V

Vinay Sajip

Thomas Heller said:
<script>
#!/usr/bin/python3.1-32
import sys; print(sys.version)
</script>

The python launcher starts 'c:\Python31\python.exe -3.1-32 script.py'.

That doesn't seem right, the launcher on my system launches using

c:\Python31\python.exe script.py

if I just run script.py, or if I invoke it as

py -3.1-32 script.py

it still launches using

c:\Python31\python.exe script.py

Regards,

Vinay Sajip
 
A

Andreas Röhler

Am 31.01.2013 17:35, schrieb Thomas Heller:
Am 31.01.2013 12:05, schrieb Andreas Röhler:

Well, let me make these remarks:

1. I'm on Windows, using gnu-emacs 24.2.1, and python-mode.el 6.1.0.
I do not understand how the shebang line is used by python-mode.el,

it uses py-shebang-regexp to determine
- if a shebang is given
- if, yes, which interpreter to run
depending on what I write into it either 'python.exe' is started when
I hit C-c C-c, or I get 'Spawning child process: invalid argument'.
The latter occurs most often when the shebang string contains 'jython'.

please file a bug-report giving some example script which triggers the bug
2. I would like to use the PEP 397 python launcher to start the python
version that is specified in the shebang line.
The python launcher py.exe parses this line when I run 'py script.py',
and then starts the corresponding python interpreter version.
The launcher parses the shebang line by its own rules (see pep397 for
exact details). One example is this:

<script>
#!/usr/bin/python3.1-32
import sys; print(sys.version)
</script>

The python launcher starts 'c:\Python31\python.exe -3.1-32 script.py'.

unfortunatly don't have a windows at my disposal.

At linux it would run exactly the interpreter specified. Might be okay for windows as shown.

I would like emacs to do the same; however this would require emacs
to do the same shebang line parsing as the launcher does.

So we do - looks like python-mode.el precedes PEP 397 :)

Expecting the bug elsewhere.
 
T

Thomas Heller

Am 31.01.2013 19:26, schrieb Vinay Sajip:
That doesn't seem right, the launcher on my system launches using

c:\Python31\python.exe script.py

if I just run script.py, or if I invoke it as

py -3.1-32 script.py

it still launches using

c:\Python31\python.exe script.py

Sorry for the confusion that I am causing. Vinay, you are right of course.

What I meant to write is this:

when the shebang line in script.py contains this:
#!/usr/bin/python3.1-32
then emacs SHOULD run
py.exe -3.1-32 script.py
and the launcher runs
c:\Python31\python.exe script.py


Thomas
 
V

Vinay Sajip

Thomas Heller said:
What I meant to write is this:

when the shebang line in script.py contains this:
#!/usr/bin/python3.1-32
then emacs SHOULD run
py.exe -3.1-32 script.py
and the launcher runs
c:\Python31\python.exe script.py

IMO it would be better for emacs to just run

py.exe script.py

and py.exe can read the shebang and do the right thing. This saves the emacs code
from having to duplicate the shebang line processing logic that py.exe uses
(which, as we know, is unusual. So for a cross-platform you can have a shebang
line of #!/usr/bin/python3.2, and on Windows it will still call the appropriate
Python 3.2 even if it's not in /usr/bin, as there's no /usr/bin :))

Regards,

Vinay Sajip
 
A

Andreas Röhler

Am 01.02.2013 00:59, schrieb Vinay Sajip:
IMO it would be better for emacs to just run

py.exe script.py

and py.exe can read the shebang and do the right thing. This saves the emacs code
from having to duplicate the shebang line processing logic that py.exe uses
(which, as we know, is unusual. So for a cross-platform you can have a shebang
line of #!/usr/bin/python3.2, and on Windows it will still call the appropriate
Python 3.2 even if it's not in /usr/bin, as there's no /usr/bin :))

Regards,

Vinay Sajip

https://bugs.launchpad.net/python-mode/+bug/1112207
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top