假设我在2种不同的虚拟环境中安装了2个不同版本的应用程序. myapp v1.0和myapp v2.0.现在我想比较一下.比较是用python本身编写的.最好的方法是什么?我们假设我可以单独运行它们并且都写一个输出文件,我可以稍后比较...

假设我在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
相反,我只想这样做:
python my_comparison_script.py
我的脚本将在此内部运行.
解决方法:
究竟是什么问题?如何使用子进程执行shell命令?如果是这种情况,一些简单的伪代码可能看起来像:
import subprocess
myProcess = subprocess.Popen( ['these', 'are', 'for', 'the', 'shell'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE )
[outStream, errStream] = myProcess.communicate()
那么你可以用标准输出(outStream)做任何你喜欢的事情,并且如果存在errStream则做不同的事情(标准错误).这包括将标准输出或标准错误写入文件.然后我猜你会分散那些文件?
一个实际的代码示例(假设您在Linux系统上有python 2.6)可能如下所示:
import subprocess
with open('dateHelp.log', 'w') as dateLog:
with open('dateHelp.err', 'w') as errLog:
dateHelp = subprocess.Popen([ 'date', '-h'], stdout=dateLog,
stderr=errLog)
dateHelp.communicate()
本文标题为:使用python在不同的virtualenv中运行子进程


基础教程推荐
- python FastApi实现数据表迁移流程详解 2022-08-30
- Python入门之字典的使用教程 2022-10-20
- Linux下Python的环境变量的设置 2023-11-15
- Python yield 关键词, 2023-08-04
- Python re.findall中正则表达式(.*?)和参数re.S使用 2022-09-02
- 详解TensorFlow训练网络两种方式 2023-08-11
- tkFileDialog无法在Windows上将结果转换为Python列表 2023-11-14
- pandas中df.rename()的具体使用 2022-08-30
- Anaconda如何查看自己目前安装的包详解 2023-08-04
- 如何在python进程之间实时共享对象和数据? 2023-11-14