我认为运行带有稍微修改环境的外部命令是一种非常常见的情况.这就是我倾向于这样做的方式:
import subprocess, os
my_env = os.environ
my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"]
subprocess.Popen(my_command, env=my_env)
Run Code Online (Sandbox Code Playgroud)
我有一种直觉,觉得有更好的方法; 看起来好吗?
假设我在2种不同的虚拟环境中安装了2个不同版本的应用程序.myapp v1.0和myapp v2.0.
现在我想比较一下.比较是用python本身编写的.最好的方法是什么?我们假设我可以单独运行它们并且都写一个输出文件,我可以稍后比较.
一种方法是编写一个bash脚本(这就是我目前所拥有的).我激活一个virtualenv,运行myapp v1.0,激活另一个virtualenv,运行myapp v2.0.稍后在这些文件上运行比较模块.但是我想在那里添加更多的动态(采用一些可选的参数等),使用python会更容易.
编辑:
目前我有类似的东西(一个bash脚本):
source virtualenv1/bin/activate
python my_script.py
deactivate
source virtualenv2/bin/activate
python my_other_script.py
deactivate
python my_comparison_script.py
Run Code Online (Sandbox Code Playgroud)
相反,我只想这样做:
python my_comparison_script.py
Run Code Online (Sandbox Code Playgroud)
我的脚本将在此内部运行.