mirror of https://github.com/go-python/gopy.git
46 lines
920 B
Go
46 lines
920 B
Go
|
// Copyright 2015 The go-python Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"fmt"
|
||
|
"os/exec"
|
||
|
)
|
||
|
|
||
|
// getPythonVersion returns the python version available on this machine
|
||
|
func getPythonVersion() (string, error) {
|
||
|
py, err := exec.LookPath("python")
|
||
|
if err != nil {
|
||
|
return "", fmt.Errorf(
|
||
|
"gopy: could not locate 'python' executable (err: %v)",
|
||
|
err,
|
||
|
)
|
||
|
}
|
||
|
|
||
|
out, err := exec.Command(py, "--version").Output()
|
||
|
if err != nil {
|
||
|
return "", fmt.Errorf(
|
||
|
"gopy: error retrieving python version (err: %v)",
|
||
|
err,
|
||
|
)
|
||
|
}
|
||
|
|
||
|
vers := ""
|
||
|
switch {
|
||
|
case bytes.HasPrefix(out, []byte("Python 2")):
|
||
|
vers = "py2"
|
||
|
case bytes.HasPrefix(out, []byte("Python 3")):
|
||
|
vers = "py3"
|
||
|
default:
|
||
|
return "", fmt.Errorf(
|
||
|
"gopy: invalid python version (%s)",
|
||
|
string(out),
|
||
|
)
|
||
|
}
|
||
|
|
||
|
return vers, nil
|
||
|
}
|