Skip to content Skip to sidebar Skip to footer

Conditional Shebang Line For Different Versions Of Python

I have a problem when trying to run a python script on two different computers. On each computer I would like to run the script using python version 2.7.3 however the problem I am

Solution 1:

#!/bin/sh
# -*- mode: Python -*-

""":"
# bash code here; finds a suitable python interpreter and execs this file.
# prefer unqualified "python" if suitable:
python -c 'import sys; sys.exit(not (0x020500b0 < sys.hexversion < 0x03000000))' 2>/dev/null \
    && exec python "$0" "$@"
for pyver in 2.6 2.7 2.5; do
    which python$pyver > /dev/null 2>&1 && exec python$pyver "$0" "$@"
done
echo "No appropriate python interpreter found." >&2
exit 1
":"""

import sys
print sys.version

taken from https://github.com/apache/cassandra/blob/trunk/bin/cqlsh


Solution 2:

You can write a small wrapper script that looks through different versions of python executables and uses the one it finds.

For example:

#!/bin/sh -e
pythons=('python2', 'python2.7.3')
for py_exec in ${pythons[@]}; do
    py_exec="/usr/bin/$py_exec"
    if [[ -f $py_exec ]]; then
        exec $py_exec $1
    fi
done

Of course this script is just a start sample, you could surely improve it in many ways. Just do give you an idea of what I mean.


Post a Comment for "Conditional Shebang Line For Different Versions Of Python"