2017-01-13 11 views
5

Что такое «корневая» среда в конде? Это просто среда, которая использует (только) системные пакеты?Имеются ли в средах conda доступ к среде «root»? (== системные пакеты)?

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

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

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

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

+0

Конфигурация conda в названии «корневая» среда ужасна и подразумевает всевозможные неправильные вещи, например. разрешения, риск эскалации привилегий. Если бы это просто было названо «базой», это обсуждение было бы устранено. – smci

ответ

4

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

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 

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

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 

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

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

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

(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