[Python-Dev] Bilingual scripts (original) (raw)

Daniel Holth dholth at gmail.com
Tue May 28 19:57:07 CEST 2013


On Tue, May 28, 2013 at 1:30 PM, Barry Warsaw <barry at python.org> wrote:

On May 25, 2013, at 03:12 AM, Chris McDonough wrote:

You probably already know this, but I'll mention it anyway. This probably matters a lot for nose and pyflakes, but I'd say that for tox it should not, it basically just scripts execution of shell commands. I'd think maybe in cases like tox (and others that are compatible with both Python 2 and 3) the hashbang should just be set to "#!/usr/bin/python" unconditionally. Unfortunately, not entirely so: https://bitbucket.org/hpk42/tox/issue/96/cant-have-a-python-3-setuppy Maybe we could also think about modifying pyflakes so that it can validate both 2 and 3 code (choosing one or the other based on a header line in the validated files and defaulting to the version of Python being run). This is kind of the right thing anyway. Agreed. Auto-detection may need to be accompanied by a command line option to override in some cases. But I agree, that in general, it would be very nice if the script itself were actually bilingual. (But then, see my previous comment about cross-interpreter dependencies.) Nose is a bit of a special case. I personally never run nosetests directly, I always use setup.py nosetests, which makes it not matter. Which is morally equivalent to $python -m nose. In general, I'd like to think that scripts that get installed to global bindirs will execute utilities that are useful independent of the version of Python being used to execute them. Agreed. I'm trying to tease out some conventions we can recommend for when this can't be the case for whatever reason. -Barry

Wheel has no mechanism for renaming scripts (or any file) based on the Python version used to install. Instead you would have to build python-version-specific packages for each desired script name.



More information about the Python-Dev mailing list