Conditional shebang line for different versions of Python

后端 未结 2 437
天涯浪人
天涯浪人 2021-01-17 11:44

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 probl

相关标签:
2条回答
  • #!/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

    0 讨论(0)
  • 2021-01-17 12:05

    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.

    0 讨论(0)
提交回复
热议问题