python: Subprocess.call o Subprocess.Popen no pueden usar ejecutables que están en PATH (Linux / Windows)

Estoy escribiendo un programa que necesita ejecutarse tanto en Linux como en Windows y usar ejecutables (con parámetros) que existen en la ruta. (Ficticio)

Actualmente tengo problemas para ejecutar ejecutables en Windows usando Subprocess.Call y Subprocess.Popen.

Para un código como este, en Windows 8

def makeBlastDB(inFile, inputType, dbType, title, outDir):
    strProg = 'makeblastdb'
    strInput = '-in ' + inFile
    strInputType = '-input_type ' + inputType
    strDBType = '-dbtype ' + dbType
    strTitle = '-title ' + title
    strOut = '-out ' + os.path.join(os.sep, outDir, title)
    cmd = [strProg, strInput, strInputType, strDBType, strTitle, strOut]
    result = Popen(cmd, shell=True)

Me sale el mensaje de error en la consola

'makeblastdb' is not recognized as an internal or external command,
operable program or batch file.

Aunque puedo ejecutar el mismo comando usando cmd.exe
Recibo la misma respuesta con shell = False.

¿Alguna idea sobre cómo puedo ejecutar el comando suponiendo que el ejecutable esté en la variable de entorno PATH? Gracias

Mejor respuesta
Puede controlar las variables de entorno disponibles en el subproceso generado pasando una asignación con el argumento de palabra clave env. P.ej.

proc = subprocess.Popen(args, env={'PATH': '/some/path'})

O para heredar PATH de la variable de entorno del sistema, sin necesariamente tirar todo lo demás del entorno del sistema:

proc = subprocess.Popen(args, env={'PATH': os.getenv('PATH')})

Sin embargo, podría ser más fácil / simple usar una ruta absoluta.

Por favor indique la dirección original:python: Subprocess.call o Subprocess.Popen no pueden usar ejecutables que están en PATH (Linux / Windows) - Código de registro