Я ищу хороший способ выяснить имя среды conda, в которой я нахожусь, из запущенного кода или интерактивного экземпляра python.
Сценарий использования заключается в том, что я запускаю записные книжки Jupyter с ядрами Python 2 и Python 3 из установки miniconda. Среда по умолчанию - Py3. Для Py2 существует отдельная среда. Внутри файла записной книжки я хочу, чтобы он попытался conda install foo
. Я использую subcommand
для этого сейчас, так как я не могу найти программный эквивалент Conda для pip.main(['install','foo'])
.
Проблема в том, что команде необходимо знать имя среды Py2, чтобы установить foo
туда, если ноутбук работает с ядром Py2. Без этой информации он устанавливается в среду Py3 по умолчанию. Я бы хотел, чтобы код сам по себе определял, в какой среде он находится, и подбирал для него правильное имя.
Лучшее решение, которое у меня есть на данный момент:
import sys
def get_env():
sp = sys.path[1].split("/")
if "envs" in sp:
return sp[sp.index("envs") + 1]
else:
return ""
Есть ли более прямой / подходящий способ сделать это?
conda install x
будет устанавливаться в любой текущей среде: поэтому, если ноутбук находится в среде Python 2, он будет установлен в этой среде. - person   schedule 11.04.2016!conda env list
в одной ячейке иimport subprocess; print(subprocess.check_output(['conda','env', 'list']).decode())
в другой. Оба показывают, что env по умолчанию активен, независимо от того, запускаю ли я ноутбук в Py2 или Py3, поэтому может быть, что команды, выдаваемые против ОС, работают в любом env, с помощью которого был запущен сервер jupiter. - person Alnilam   schedule 13.04.2016conda env list
, а*
указывает на текущий включенный env. Причина, по которой я это делаю, заключается в том, что, несмотря на то, что имя отображается в приглашении имени терминала, у меня были проблемы, когда приглашение не соответствовало используемому мной env (например, используя vscode). - person Charlie Parker   schedule 09.06.2020$ echo $CONDA_PREFIX
см. Вывод:/home/miranda9/miniconda3/envs/metalearning
- person Charlie Parker   schedule 26.04.2021