Szukam dobry sposób, aby dowiedzieć się nazwę środowiska conda jestem w ramach kodu uruchomionego lub interaktywnej instancji Pythona.Jak znaleźć nazwę środowiska conda, w którym działa mój kod?
Używam tego, że używam notebooków Jupyter zarówno z jądrem Python 2, jak i Python 3 z instalacji miniconda. Domyślne środowisko to Py3. Istnieje oddzielne środowisko dla Py2. Wewnątrz pliku notatnika chcę, aby spróbował on uzyskać conda install foo
. Używam do tego celu subcommand
, ponieważ nie mogę znaleźć programowego odpowiednika warunkowego pip.main(['install','foo'])
.
Problem polega na tym, że polecenie musi znać nazwę środowiska Py2, aby zainstalować tam foo
, jeśli komputer jest uruchomiony przy użyciu jądra Py2. Bez tych informacji instaluje się w domyślnym środowisku Py3. Chciałabym, żeby kod wyodrębnił środowisko, w którym się znajduje, i nazwę dla niego samego.
Najlepszym rozwiązaniem mam tak daleko jest:
import sys
def get_env():
sp = sys.path[1].split("/")
if "envs" in sp:
return sp[sp.index("envs") + 1]
else:
return ""
Czy istnieje bardziej bezpośredni/właściwym sposobem do osiągnięcia tego celu?
O ile się nie mylę, 'Conda zainstalować x' zainstaluje w jakiejkolwiek obecnej sytuacji brzmi: tak jeśli notebook znajduje się w środowisku Python 2, zostanie zainstalowany w tym środowisku. – tfb
Właśnie próbowałem następującego eksperymentu. W notebooku Jupyter uruchomionym z mojego domyślnego środowiska anakond (ale z dostępnymi jądrami Py2 i Py3) uruchomiłem '! Conda env list' w jednej komórce i' importuj podproces; print (subprocess.check_output (['conda', 'env', 'list']). decode()) 'w innym. Oba pokazują domyślne env jako aktywne, niezależnie od tego, czy uruchomię notebooka w Py2 czy Py3, więc może być tak, że komendy wydawane przeciwko os działają w dowolnym środowisku, z którego został uruchomiony serwer Jupiter. – Alnilam