2017-01-13 17 views
5

Co to jest środowisko "root" w Conda? Czy jest to tylko środowisko, które używa (tylko) pakietów systemowych?Czy środowiska conda mają dostęp do środowiska "root"? (== pakiety systemowe)?

Czy inne środowiska również korzystają z pakietów systemowych (przypuszczam, że preferuję ich wersje duplikatów)?

Czy muszę zainstalować wszystkie moje pakiety w środowisku, w którym chcę je wykorzystać?

Czy istnieje sposób skonfigurowania tego jako opcji?

Mam zainstalowany pakiet systemowy, ale nie mogę go zaimportować, gdy jestem w środowisku conda.

+0

Wybór przez Conda środowiska "root" jest okropny i pociąga za sobą różnego rodzaju złe rzeczy, np. uprawnienia, ryzyko eskalacji uprawnień. Gdyby po prostu nazwano to "bazą", ta dyskusja zostałaby pominięta. – smci

Odpowiedz

4

Środowisko root jest środowiskiem, od którego zaczynasz. Masz dostęp tylko do pakietów Pythona, które zostały jawnie zainstalowane w bieżącym środowisku conda. Oto jak wygląda mój system. Zauważ, że wszystkie ścieżki na liście wyszukiwania moduł Pythona (sys.path) znajdują się w folderze głównym 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 

Po przełączeniu środowisk Conda, Python będzie teraz wyciągnąć modułów Pythona z folderów specyficzne dla danego środowiska:

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 

Jeśli chcesz otrzymać dostęp do modułu Pythona, musisz zainstalować go wyraźnie w tym środowisku Conda z conda install XXX (zalecane) lub pip install XXX.

O ile mi wiadomo, nie ma łatwego sposobu na obejście tego zachowania.

UWAGA: Nie dotyczy to programów innych niż Python. Wszystkie programy w twojej ścieżce wykonania będą zawsze dostępne, przy czym preferowane będą programy instalowane przez Conda. Dzieje się tak dlatego, że lokalizacja instalacji conda znajduje się na początku twojej zmiennej PATH. EG:

Powiązane problemy