Invalid 'text' keyword in update_conda script
The subprocess.run() command is failing on SL7 due to an invalid 'text=True' keyword passed to subprocess.run:
result = subprocess.run([installer, "-y", "-b", "-p", base_path],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)
[cdsadmin@cr15 envs]$ /usr/bin/update_conda --config-path /opt/conda/conda_config.yaml
{'home': '/opt/conda', 'forge_url': 'http://puppet1/conda/environments/linux-64', 'remove_missing': False, 'environs': {'cds': {'target': 'cds-py39-2022082401'}, 'cds-py39-20220316': {'ensure': 'absent'}, 'cds-py39-20220607': {'ensure': 'absent'}, 'cds-py39-20220610': None, 'cds-py39-2022072101': {'ensure': 'absent'}, 'cds-py39-2022082401': None, 'cds-py39-2022091901': None, 'nonsens': {'target': '/ligo/apps/conda/envs/nonsens'}}, 'user_configs': []}
conda_home=/opt/conda
Mamba already installed. Skipping installation.
checking for new environments
cds-py39-2022082401 already installed
cds-py39-20220610 already installed
installing cds-py39-2022091901 environment
forge_url is http://puppet1/conda/environments/linux-64/cds-py39-2022091901.yaml
install command is /opt/conda/base/bin/mamba env create -q --file http://puppet1/conda/environments/linux-64/cds-py39-2022091901.yaml
Traceback (most recent call last):
File "/usr/bin/update_conda", line 449, in <module>
run(args.config_path, args.noop)
File "/usr/bin/update_conda", line 428, in run
installed = install_environments(conda_base, forge_url, logfile, install_envs, noop)
File "/usr/bin/update_conda", line 131, in install_environments
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)
File "/usr/lib64/python3.6/subprocess.py", line 423, in run
with Popen(*popenargs, **kwargs) as process:
TypeError: __init__() got an unexpected keyword argument 'text'
[cdsadmin@cr15 envs]$ python3 --version
Python 3.6.8
If I remove the text=True
keyword, I get a different error:
File "/usr/bin/update_conda", line 138, in install_environments
log_file.write(result.stdout)
TypeError: write() argument must be str, not bytes