Ich bin auf der Suche nach einer guten Möglichkeit, den Namen der Conda-Umgebung, in der ich bin, aus dem laufenden Code oder einer interaktiven Python-Instanz herauszufinden.Wie finde ich den Namen der Conda-Umgebung, in der mein Code läuft?
Der Anwendungsfall ist, dass ich Jupyter Notebooks mit Python 2 und Python 3 Kernel von einer Miniconda-Installation aus laufe. Die Standardumgebung ist Py3. Es gibt eine separate Umgebung für Py2. Innerhalb der Notebook-Datei möchte ich versuchen, conda install foo
. Ich benutze subcommand
, um dies jetzt zu tun, da ich kein programmatisches Conda-Äquivalent von pip.main(['install','foo'])
finden kann.
Das Problem ist, dass der Befehl den Namen der Py2-Umgebung kennen muss, um foo
dort zu installieren, wenn das Notebook mit dem Py2-Kernel läuft. Ohne diese Information wird es im Standard-Py3-env installiert. Ich möchte, dass der Code selbst herausfindet, in welcher Umgebung er sich befindet und wie er richtig heißt.
Die beste Lösung, die ich habe, so weit ist:
import sys
def get_env():
sp = sys.path[1].split("/")
if "envs" in sp:
return sp[sp.index("envs") + 1]
else:
return ""
Gibt es einen direkteren/geeigneten Weg, um dies zu erreichen?
Wenn ich nicht irre, 'Conda installiert x' in dem, was die aktuelle Umgebung ist zu installieren: so Wenn sich das Notebook in der Python 2-Umgebung befindet, wird es in dieser Umgebung installiert. – tfb
Ich habe gerade das folgende Experiment versucht. In einem Jupyter-Notebook, das von meiner Standard-Anaconda-Umgebung gestartet wurde (aber beide Py2- und Py3-ipython-Kernel verfügbar), habe ich '! Conda env list' in einer Zelle ausgeführt und' subprocess importieren; print (subprocess.check_output (['conda', 'env', 'Liste']). decode()) 'in einem anderen. Beide zeigen das Standard-Env als aktiv an, egal ob ich das Notebook in Py2 oder Py3 laufe, also kann es sein, dass Befehle, die gegen das Betriebssystem ausgegeben werden, in welcher Umgebung auch immer der Jupiter-Server gestartet wird. – Alnilam