This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2008年12月02日 08:51 by v+python, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| python_runner.py | living180, 2009年08月23日 12:25 | Runs a Python script based on a #! line included in the script | ||
| Messages (11) | |||
|---|---|---|---|
| msg76731 - (view) | Author: Glenn Linderman (v+python) * | Date: 2008年12月02日 08:51 | |
Here's how I set up my computer, for multiple versions. Now to change the "default", I just use the assoc command to change the association for .py to one of the three listed ftypes. Simple and quick. c:\>ftype Python25.File ftype Python25.File Python25.File="C:\Python25\python.exe" "%1" %* c:\>ftype Python26.File ftype Python26.File Python26.File="C:\Python26\python.exe" "%1" %* c:\>ftype Python30.File ftype Python30.File Python30.File="C:\Python30\python.exe" "%1" %* c:\>assoc .py assoc .py .py=Python25.File It would be nice if the ftypes were version specific as created by the installer; IIRC, I created the above three from the ftype Python.File as I installed each version. The Python.File could still be created by default, and could still reflect the last temporally installed version of Python... but by documenting the version specific ftypes, the user could still switch among versions. I suppose there is a question of if the version should contain two or three parts, i.e. Python253.File; and if the version should be separated such as Python2.5.3.File; the above worked for me for the moment, but some thought might reveal a more useful technique. It might even be appropriate for a Python version to create 3 ftypes, such that version N.M.O creates ftypes named PythonN.File, PythonN.M.File, and PythonN.M.O.File. All but the most specific one would be subject to change when additional versions are installed. If M or O are zero, they should probably still be specified (as zero) in a scheme like this, so that there would be a solid way of referring to all the specific versions. |
|||
| msg77014 - (view) | Author: Mark Tolonen (metolone) | Date: 2008年12月05日 13:19 | |
An extension to this idea: Support parsing #! lines in Windows and select the version of Python used. python.exe could examine: #!/usr/bin/python30 pattern match "python##", look in the registry to see if that version of python is installed, and launch that python.exe instead. |
|||
| msg77059 - (view) | Author: Glenn Linderman (v+python) * | Date: 2008年12月05日 19:28 | |
Since Python hasn't done that until now, it won't help much with the transition from 2to3. The earliest versions that could add that would be 3.1 and 2.7, it would seem, as it is a new fetaure. Perhaps it would be worth doing, in planning for Python 4... Perl has done that for many versions. The idea is useful for running scripts that were designed and tested with a given version of Perl, on that same version, to avoid the need to retest working, production, code. Even when compatibility is supposed to be retained, and every effort is made to do so in a maintenance release, sometimes little things sneak in, that no one ever thought to test, and didn't to have broken... so continuing to use the version with which a production script was last extensively tested with, is "extra safe". The technique you suggest isn't very good for testing a particular script with various versions of python because you'd have to edit the script to select the version. It is good for being "extra safe" and ensuring that a script continues to run with a particular version of the interpreter. I see this issue addressing the ability, in a testing environment, to swap what version of implicit python is invoked for scripts invoked from either the command line or from batch files, without the need to edit the script or the batch file. From the command line, it is relatively easy just to invoke the right python via "c:\pythonNN\python script", although that gets old if you are testing a large number of scripts. So I see it as primarily a convenience item for a testing environment. |
|||
| msg77071 - (view) | Author: Mark Tolonen (metolone) | Date: 2008年12月05日 21:19 | |
I see it as primarily useful in this transition period between 2.x and 3.0, since py3 scripts aren't backward compatible and I see both being installed for the few years. It could be a front-end launcher suitable for "ftype Python.File" that inspects the script for #! and checks the registry for installed python versions. That would make it work with older versions as well. Probably better suited to discussion on c.l.p than here, but at least recorded as an idea in this feature request. |
|||
| msg77099 - (view) | Author: Glenn Linderman (v+python) * | Date: 2008年12月06日 04:15 | |
Ah yes, it could work as a front-end launcher, since # is a comment character for Python anyway, so all Pythons would ignore such a line. So that can be done completely independently of python itself, and installed separately, and used by people that choose to. In other words, feel free to write the program, and release it for all that find it useful. The sooner the better, eh? |
|||
| msg91887 - (view) | Author: Daniel Harding (living180) * | Date: 2009年08月23日 12:25 | |
I have created a script that does essentially what Mark Tolonen suggests. When it is provided a script to run, it looks for a #! line and if it exists, attempts to use that to determine which version of python.exe to use. It also has the ability to install itself as the default command for running .py files in the Windows registry. Feedback welcome. |
|||
| msg104735 - (view) | Author: Andreas Lemke (Andreas24) | Date: 2010年05月01日 18:05 | |
Python 2.5, 2.6, 3.0, etc. are not fully compatible programming languages. And we cannot expect that there will ever be the one and only ultimate version of Python (hopefully). Many of us need to have more than one of them installed simultaneously. Upon opening a Python file, the right version needs to be started. For those of us who use IDLE, we wish the right version to be started with "Edit with IDLE". Therefore, we need a clean – pythonic – solution to this problem. I am probably not qualified to determine the best such solution. My main concern is that the community takes the issue seriously. Nevertheless, it seems to me that different file name extensions (.py25, .py26, .py30) would be a good candidate to solve the issue. On Windows, I set up the appropriate file type associations. It worked quite well, except that IDLE doesn't seem to recognize files with extensions other than .py. |
|||
| msg111330 - (view) | Author: Mark Lawrence (BreamoreBoy) * | Date: 2010年07月23日 14:21 | |
Right now this would suit me down to the ground, as I'm running four maintenance versions, 2.6/7 and 3.1/2 in parallel. But as this is a feature request it will not happen until 3.2 at the earliest. |
|||
| msg111464 - (view) | Author: Mark Lawrence (BreamoreBoy) * | Date: 2010年07月24日 12:00 | |
Hum, I think I spoke too soon. @Brian: @Tim: what do you think about this? |
|||
| msg111478 - (view) | Author: Brian Curtin (brian.curtin) * (Python committer) | Date: 2010年07月24日 13:37 | |
msg77014 could bring startup time down significantly so I'm -1 on that. Overall I've never found difficulty in running scripts with the right version so I don't have a strong enough opinion on any of it. I think it's probably something which should be baked in python-ideas for a while to get a wider audience to think about it. |
|||
| msg164359 - (view) | Author: Tim Golden (tim.golden) * (Python committer) | Date: 2012年06月29日 22:06 | |
Effectively made redundant by PEP 397, implemented in 3.3 |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:41 | admin | set | github: 48735 |
| 2012年06月29日 22:06:21 | tim.golden | set | status: open -> closed resolution: wont fix messages: + msg164359 stage: resolved |
| 2010年07月24日 13:37:49 | brian.curtin | set | messages: + msg111478 |
| 2010年07月24日 12:00:34 | BreamoreBoy | set | nosy:
+ tim.golden, brian.curtin messages: + msg111464 |
| 2010年07月23日 14:21:24 | BreamoreBoy | set | nosy:
+ BreamoreBoy messages: + msg111330 versions: + Python 3.2, - Python 2.6, Python 2.5, Python 3.0 |
| 2010年05月01日 18:05:03 | Andreas24 | set | nosy:
+ Andreas24 messages: + msg104735 versions: + Python 2.5 |
| 2009年09月08日 14:52:19 | matthieu.labbe | set | nosy:
+ matthieu.labbe |
| 2009年08月23日 12:25:46 | living180 | set | files:
+ python_runner.py messages: + msg91887 |
| 2009年08月19日 20:03:51 | living180 | set | nosy:
+ living180 |
| 2008年12月06日 04:15:33 | v+python | set | messages: + msg77099 |
| 2008年12月05日 21:19:43 | metolone | set | messages: + msg77071 |
| 2008年12月05日 19:28:39 | v+python | set | messages: + msg77059 |
| 2008年12月05日 13:19:19 | metolone | set | nosy:
+ metolone messages: + msg77014 |
| 2008年12月02日 08:51:58 | v+python | create | |