Я пытаюсь с помощью скрипта python проверить, установлена ли в системе анаконда.
Моя мысль о том, как это сделать, - это вызвать «which conda» из скрипта Python и получить результат.
Похоже, что по какой-то причине это невозможно. На моем компьютере (Macbook Pro 2015 года под управлением High Sierra) похоже, что вызов этого вызывает какую-то ошибку. Это не было бы проблемой, за исключением того, что python, похоже, ни при каких обстоятельствах не может фиксировать вывод ошибок из вызовов.
Я пробовал subprocess.call, os.system, subprocess.run, subprocess.check_call, subprocess.check_output.
Во всех этих случаях, несмотря на заявления о том, что вы можете перенаправить вывод ошибок на стандартный вывод с помощью stderr = subprocess.PIPE или stderr = subprocess.STDOUT, я смог получить все ничего из любого из этих вызовов.
Когда я вызываю "which conda", я вижу в своей командной строке, что она выводит большой объем текста.
В 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
Когда вы распечатываете вывод подпроцесса, вы распечатываете
s.stdoutдля объекта подпроцессаs, верно?