我正在尝试从python脚本检查系统是否已安装anaconda。
我对如何执行此操作的想法是从python脚本中调用“哪个conda”并获取输出。
尽管出于某种原因,看来这是不可能的。在我的计算机(运行High Sierra的2015 Macbook Pro)上,似乎调用此方法会引发某种错误。没问题,只是python在任何情况下似乎都无法捕获调用的错误输出。
我尝试了subprocess.call,os.system,subprocess.run,subprocess.check_call,subprocess.check_output。
在所有这些情况下,尽管声称您可以使用stderr = subprocess.PIPE或stderr = subprocess.STDOUT将错误输出转发至stdout,但我仍然无法从这些调用中获得任何信息。
我在命令行中看到的是“ conda”,它会输出大量文本。
在python中,即使我按照指示捕获错误,输出仍为空白字符串。
令人沮丧的是,这似乎是一件非常简单的事情;我现在花了很多时间可以在命令行上完成。为什么不能用这种高级语言来完成?
任何帮助/提示都值得赞赏。谢谢!
答案 0 :(得分:3)
我没有蟒蛇...我只是换成了python:
>>> from os import popen
>>> cmd = "which python"
>>> for i in popen(cmd):
... print(i)
...
/usr/bin/python
您也可以执行以下操作以获取路径的最后一部分:
from os import path, popen
cmd = "which python"
>>> for i in popen(cmd):
... print(path.basename(i))
...
python
这对我也有用:
>>> for i in popen('whereis python'):
... for j in i.split():
... print(j)
...
python:
/usr/bin/python2.7-config
/usr/bin/python3.5
/usr/bin/python3.5m
/usr/bin/python
/usr/bin/python2.7
/usr/bin/python3.5m-config
/usr/bin/python3.5-config
/usr/lib/python3.5
/usr/lib/python2.7
/etc/python3.5
/etc/python
/etc/python2.7
/usr/local/lib/python3.5
/usr/local/lib/python2.7
/usr/include/python3.5
/usr/include/python3.5m
/usr/include/python2.7
/usr/share/python
/usr/share/man/man1/python.1.gz