(это ответ, только потому, что это мой самый первый пост, и у меня только одна репутация)
ел бы определить в общем виде из сеанса 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
пакет не установлен по умолчанию.
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?