问题背景:我实现了三个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环境,返回现有环境。
这样就解决了问题