使用os.system或subprocess从Python调用“哪个程序”不返回路径

使用os.system或subprocess从Python调用“哪个程序”不返回路径

问题描述:

我在Python版本2.7.10中使用了macOS Sierra 10.12.16和Xcode 8.3.3。 我想从Python调用latex。 os.system('latex myFile.tex')不起作用,因为需要完整路径。所以我试图通过编程命令获得的路径。使用os.system或subprocess从Python调用“哪个程序”不返回路径

import os 
import subprocess 

batcmd = '/usr/bin/which latex' 
thePath = os.system(batcmd) 
print("The path: "+str(thePath)) 

p = subprocess.Popen([batcmd], stdout=subprocess.PIPE, shell=True) 
print(p.stdout.read()) 

我从两个变化得到的结果是:

he path: 256 

Program end 

with exit code: 0 

的系统命令提供数256.子命令导出一个空行。其他系统调用,如ls或dir工作正常。

我如何获得Python程序的路径?

shutil.which为蟒蛇3.3:http://docs.python.org/3.3/library/shutil.html#shutil.which

但这里有与Python 2的解决方法,让你的乳胶可执行文件的路径:

from distutils.spawn import find_executable 

print find_executable('latex') 
+0

它没有工作。我得到答案没有。 –

路径变量被包含在我的自定义仓迪尔斯,包括乳胶。

进口OS

os.environ [ “PATH”] + = os.pathsep + '的/ usr /本地/ .......'

打印(os.getenv(“PATH “))

+0

应该假定路径未知。 –

+0

usr/local/texlive/...是它与我的系统一起驻留在其他随texlive附带的可执行文件中的位置.... –