在python程序中切换虚拟环境——subprocess()函数

文章讲述了作者在Python项目中遇到的问题,如何在一个虚拟环境A中运行三个依赖不同虚拟环境B和C的工程。通过subprocess调用外部命令并在适当时切换虚拟环境,实现跨环境的程序执行,并解决包版本冲突问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景:我实现了三个python文件,分别是在虚拟环境A,B,C下运行,最后我需要将这三个工程集成为一个总的工程,在虚拟环境A中运行,但是在运行过程中也需要在另外两个环境中执行另外两个工程。

这就非常麻烦了,原本我只需要写函数调用就可以将三个工程集成起来,但是现在三个工程所处于的虚拟环境是不一样的!我解决问题的思路如下:

思路一:

重新配置一个虚拟环境,同时满足虚拟环境A B C的配置要求。但是这并不现实,因为我发现三个虚拟环境甚至在一些包的版本上存在冲突,比如环境A 要求xxx的版本>2.1.1,而环境B 要求xxx的版本<=1.9.0,这就非常尴尬了。

思路二:使用subprocesss()函数

subprocess()是在python程序运行中,可以调用命令行执行相应的命令行代码

image_name = os.path.basename(image_path)
    new_image_path = os.path.join(folder_path, image_name)
    tem_image.save(new_image_path)
    subprocess.run('conda run -n schp CUDA_VISIBLE_DEVICES=2 python /home/Self-Correction-Human-Parsing/simple_extractor_changing.py', shell=True)
    im_parse_path = "/home/ladi-vton/src/image_parse/parse.png"

    subprocess.run(f"conda run -n humvis CUDA_VISIBLE_DEVICES=3 python /home/zpc/HumVis/get_pose_kps.py --img_path {image_path}", shell=True)
    pose_json_path = "/home/ladi-vton/src/keypoints_json/kps.json"

执行的代码为:

subprocess.run('conda run -n schp python /home/Self-Correction-Human-Parsing/simple_extractor_changing.py', shell=True)
包含 激活虚拟环境+运行对应程序。

运行完成后就会自动退出schp环境,返回现有环境。

这样就解决了问题

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值