Adding the ability to define conda channels

This commit is contained in:
Will Dampier
2022-09-02 14:10:43 -04:00
parent 121b4c7d8d
commit fc8f70463c
2 changed files with 15 additions and 4 deletions

View File

@@ -43,6 +43,15 @@ def test_ensure_packages(prefix):
# Throws an error if this fails
subprocess.check_call([os.path.join(prefix, "bin", "python"), "-c", "import numpy"])
def test_ensure_channel_packages(prefix):
"""
Test installing packages in conda environment
"""
conda.ensure_conda_packages(prefix, ["csvtk"], channels=('conda-forge', 'bioconda'))
# Throws an error if this fails
subprocess.check_call([os.path.join(prefix, "bin", "csvtk"), "cat", "--help"])
def test_ensure_pip_packages(prefix):
"""

View File

@@ -90,9 +90,9 @@ def install_miniconda(installer_path, prefix):
fix_permissions(prefix)
def ensure_conda_packages(prefix, packages):
def ensure_conda_packages(prefix, packages, channels=('conda-forge',)):
"""
Ensure packages (from conda-forge) are installed in the conda prefix.
Ensure packages (from channels) are installed in the conda prefix.
Note that conda seem to update dependencies by default, so there is probably
no need to have a update parameter exposed for this function.
@@ -103,16 +103,18 @@ def ensure_conda_packages(prefix, packages):
# Explicitly do *not* capture stderr, since that's not always JSON!
# Scripting conda is a PITA!
# FIXME: raise different exception when using
channel_cmd = '-c ' + ' -c '.join(channels)
raw_output = subprocess.check_output(
conda_executable
+ [
"install",
"-c",
"conda-forge", # Make customizable if we ever need to
"--json",
"--prefix",
abspath,
]
+ channel_cmd.split()
+ packages
).decode()
# `conda install` outputs JSON lines for fetch updates,