(это ответ, только потому, что это мой самый первый пост, и у меня только одна репутация)

ел бы определить в общем виде из сеанса Python, управляется ли он conda.

Несколько идей, которые не являются достаточно общими, чтобы быть полезными:

1: использовать переменные среды

Как уже упоминалось вКак найти имя среды conda, в которой выполняется мой код?

import os
is_conda = 'CONDA_PREFIX' in os.system or 'CONDA_DEFAULT_ENV' in os.system

Кажется, что это не работает в среде корневого конда, где эти переменные не всегда определены. Он также имеет потенциальные ложные срабатывания, если происходит активация conda, когда вы используете другую установку Python.

2: Проверьте путь к исполняемому файлу
import sys
is_conda = ('anaconda' in sys.executable) or ('miniconda' in sys.executable)

Это будет работать в случае, если пользователи установят anaconda / miniconda в путь по умолчанию. Иначе может не получиться. Также легко представить ложные срабатывания.

3. Проверьте информацию о версии

Как отмечено в ответах налюбой способ узнать, является ли пользовательская среда Python анакондойВы можете проверить строку версии Python в некоторых случаях:

import sys
is_conda = ('Continuum Analytics' in sys.version) or ('Anaconda' in sys.version)

В настоящее время это работает для Python, установленного из канала по умолчанию, но это довольно хрупко и может сломаться в будущем, особенно с изменением названия компании Continuum. Это также, вероятно, дает сбой, если Python установлен из стороннего источника, такого как conda-forge.

4. Проверьтеconda Импортировать
try:
    import conda
except:
    is_conda = False
else:
    is_conda = True

Это работает до тех пор, пока вы находитесь в среде root conda, но обычно не работает, если вы находитесь в другой среде conda, гдеconda пакет не установлен по умолчанию.

5: попробуйconda чтобы увидеть, работает ли это

Предложение от Атто Алласаниже:

import subprocess
try:
    retcode = subprocess.call(['conda', 'install', '-y', 'pip'])
except:
    is_conda = False
else:
    is_conda = (retcode == 0)

Это работает в простейших случаях, но не работает в общем случае использования нескольких ядер в Jupyter, гдеconda исполняемый файл может или не может быть подключен к текущему ядру Python.

Есть липолностью общий способ определить из Python, управляется ли эта установка Python с помощью conda?

Ответы на вопрос(5)

Ваш ответ на вопрос