简介:在一些实现远程执行任务、自动化部署、测试或远程控制台等场景下,某些需要依赖于特定的 conda 环境,如何激活是指定conda环境,是一个值得探讨学习的地方。
历史攻略:
案例代码:
# -*- coding: utf-8 -*-
# time: 2024/6/8 13:29
# file: sub_conda.py
# 公众号: 玩转测试开发
import time
import subprocess
def ssh_command(command, timeout=360):
popen = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, bufsize=1)
out, err = popen.communicate(timeout=timeout)
message = out + err
print(f"{message}")
popen.kill()
time.sleep(0.05)
popen.kill()
return message
if __name__ == '__main__':
command = "ssh ubuntu@11.12.13.14 'source /home/ubuntu/miniconda3/bin/activate test && conda env list'"
ssh_command(command)
免密设置请参考:
运行结果:
(base) tom@LAPTO:/mnt/d/codes$ python sub_conda.py
# conda environments:
#
base /home/ubuntu/miniconda3
test * /home/ubuntu/miniconda3/envs/test
注意事项:subprocess.Popen() 需要使用 shell=True 参数,这样可以让它执行带有管道和重定向的命令,但要小心避免使用带有用户输入的命令,因为这可能会导致安全风险(例如,遭受命令注入攻击)。