Wie finde ich den Namen des conda Umgebung, in der mein code ausgeführt wird?

Ich bin auf der Suche nach ein guter Weg, um herauszufinden, den Namen des conda-Umgebung ich bin in innerhalb ausführen von code oder einer interaktiven python-Instanz.

Der use-case ist, dass ich bin läuft Jupyter notebooks mit sowohl Python 2 und Python 3-Kerneln von einem miniconda installieren. Die Standard-Umgebung ist Py3. Es gibt eine separate Umgebung für Py2. Im inneren des notebook-Datei, ich will es versuchen conda install foo. Ich bin mit subcommand dies zu tun, für jetzt, da ich kann nicht finden, eine programmatische conda äquivalent pip.main(['install','foo']).

Das problem ist, dass der Befehl benötigt, um zu wissen, die Namen der Py2-Umgebung zu installieren foo es, wenn das notebook läuft mit der Py2-kernel. Ohne info, dass es installiert in der Standard-Py3 env. Ich möchte für den code, um herauszufinden, welche Umgebung Sie ist, und die rechten Namen für seine eigene.

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 eine weitere direkte/geeignete Weg, um dies zu erreichen?

  • Wenn ich nicht Irre, conda install x installieren, in das, was die aktuelle Umgebung, ist: wenn das notebook in den Python-2-Umgebung dann es wird installiert in dieser Umgebung.
  • Ich habe gerade versucht das folgende experiment. In einem Jupyter notebook aus gestartet mein Standard anaconda Umgebung (aber mit beiden Py2 und Py3 ipython Kernel vorhanden) ich lief !conda env list in einer Zelle und import subprocess; print(subprocess.check_output(['conda','env', 'list']).decode()) in einem anderen. Beide zeigen die Standard-env als aktiv, ob ich das notebook in Py2 oder Py3, so kann es sein, dass Befehle erteilt werden, die gegen das os zu betreiben, in welcher env mit dem jupiter-server wurde gestartet mit.
InformationsquelleAutor Alnilam | 2016-04-11
Schreibe einen Kommentar