Имеют ли среды conda доступ к корневой среде? (== системные пакеты)?

Что такое "корневая" среда в conda? Это просто среда, которая использует (только) системные пакеты?

Используют ли другие среды также системные пакеты (я бы предпочел отдавать предпочтение их версиям дубликатов)?

Или мне нужно будет установить все свои пакеты в среде, где я хочу их использовать?

Есть ли способ настроить это как вариант?

У меня установлен системный пакет, но я не могу импортировать его, когда нахожусь в среде conda.

1 ответ

Корневая среда - это просто среда, в которой вы начинаете. У вас есть доступ только к пакетам python, которые вы явно установили в текущей среде conda. Вот как выглядит моя система. Обратите внимание, что все пути в списке поиска модуля python (sys.path) находятся в корневой папке conda:

jmepple-lm:~ jmeppley$ conda env list
# conda environments:
#
anvio                    /Users/jmeppley/anaconda3/envs/anvio
anvio2                   /Users/jmeppley/anaconda3/envs/anvio2
jupyter                  /Users/jmeppley/anaconda3/envs/jupyter
snake                    /Users/jmeppley/anaconda3/envs/snake
root                  *  /Users/jmeppley/anaconda3

jmepple-lm:~ jmeppley$ python -c "import sys; print(\"\\n\".join(sys.path))"

/Users/jmeppley/anaconda3/lib/python35.zip
/Users/jmeppley/anaconda3/lib/python3.5
/Users/jmeppley/anaconda3/lib/python3.5/plat-darwin
/Users/jmeppley/anaconda3/lib/python3.5/lib-dynload
/Users/jmeppley/anaconda3/lib/python3.5/site-packages
/Users/jmeppley/anaconda3/lib/python3.5/site-packages/aeosa
/Users/jmeppley/anaconda3/lib/python3.5/site-packages/galaxy_lib-17.5.9-py3.5.egg
/Users/jmeppley/anaconda3/lib/python3.5/site-packages/mmtf_python-1.0.5-py3.5.egg
/Users/jmeppley/anaconda3/lib/python3.5/site-packages/pysftp-0.2.8-py3.5.egg
/Users/jmeppley/anaconda3/lib/python3.5/site-packages/python_dateutil-2.3-py3.5.egg
/Users/jmeppley/anaconda3/lib/python3.5/site-packages/setuptools-27.2.0-py3.5.egg
/Users/jmeppley/anaconda3/lib/python3.5/site-packages/urllib3-1.12-py3.5.egg

Когда вы переключаете среды conda, python теперь извлекает модули python из папок, специфичных для этой среды:

jmepple-lm:~ jmeppley$ source activate snake
(snake) jmepple-lm:~ jmeppley$ python -c "import sys; print(\"\\n\".join(sys.path))"

/Users/jmeppley/anaconda3/envs/snake/lib/python35.zip
/Users/jmeppley/anaconda3/envs/snake/lib/python3.5
/Users/jmeppley/anaconda3/envs/snake/lib/python3.5/plat-darwin
/Users/jmeppley/anaconda3/envs/snake/lib/python3.5/lib-dynload
/Users/jmeppley/anaconda3/envs/snake/lib/python3.5/site-packages
/Users/jmeppley/anaconda3/envs/snake/lib/python3.5/site-packages/mmtf_python-1.0.5-py3.5.egg
/Users/jmeppley/anaconda3/envs/snake/lib/python3.5/site-packages/pysftp-0.2.8-py3.5.egg
/Users/jmeppley/anaconda3/envs/snake/lib/python3.5/site-packages/python_dateutil-2.3-py3.5.egg
/Users/jmeppley/anaconda3/envs/snake/lib/python3.5/site-packages/setuptools-27.2.0-py3.5.egg
/Users/jmeppley/anaconda3/envs/snake/lib/python3.5/site-packages/urllib3-1.12-py3.5.egg

Если вы хотите получить доступ к модулю Python, вам придется явно установить его в этой среде conda install XXX (рекомендуется) или pip install XXX,

Насколько я знаю, нет простого способа переопределить это поведение.

ПРИМЕЧАНИЕ. Это не относится к программам, не относящимся к Python. Любые программы в вашем пути выполнения всегда будут доступны, причем предпочтение отдается программам, установленным через conda. Это потому, что место установки conda находится в начале вашей переменной PATH. НАПРИМЕР:

(snake) jmepple-lm:~ jmeppley$ echo $PATH
/Users/jmeppley/anaconda3/envs/snake/bin:/Users/jmeppley/anaconda3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Другие вопросы по тегам