##// END OF EJS Templates
Use environment variable to identify conda / mamba...
Shaun Walbridge -
Show More
@@ -9,6 +9,7 b''
9 9 #-----------------------------------------------------------------------------
10 10
11 11 import functools
12 import os
12 13 import re
13 14 import shlex
14 15 import sys
@@ -41,6 +42,16 b' def _get_conda_like_executable(command):'
41 42 executable: string
42 43 Value should be: conda, mamba or micromamba
43 44 """
45 # Check for a environment variable bound to the base executable, both conda and mamba
46 # set these when activating an environment.
47 base_executable = "CONDA_EXE"
48 if 'mamba' in command.lower():
49 base_executable = "MAMBA_EXE"
50 if base_executable in os.environ:
51 executable = Path(os.environ[base_executable])
52 if executable.is_file():
53 return str(executable.resolve())
54
44 55 # Check if there is a conda executable in the same directory as the Python executable.
45 56 # This is the case within conda's root environment.
46 57 executable = Path(sys.executable).parent / command
@@ -48,10 +59,12 b' def _get_conda_like_executable(command):'
48 59 return str(executable)
49 60
50 61 # Otherwise, attempt to extract the executable from conda history.
51 # This applies in any conda environment.
62 # This applies in any conda environment. Parsing this way is error prone because
63 # different versions of conda and mamba include differing cmd values such as
64 # `conda`, `conda-script.py`, or `path/to/conda`, here use the raw command provided.
52 65 history = Path(sys.prefix, "conda-meta", "history").read_text(encoding="utf-8")
53 66 match = re.search(
54 rf"^#\s*cmd:\s*(?P<command>.*{executable})\s[create|install]",
67 rf"^#\s*cmd:\s*(?P<command>.*{command})\s[create|install]",
55 68 history,
56 69 flags=re.MULTILINE,
57 70 )
General Comments 0
You need to be logged in to leave comments. Login now