我有一个名为runner.py
的Python脚本需要在VM上运行,因为Internet被禁用,在执行时无法安装新的python库。
由于我拥有VM的img,我已经给它LAN,安装了virtualenv并在/tmp/myenv
创建了virtualenv。
由于此VM是快照,因此在启动时(每10分钟)丢失所有数据,包括临时数据。
我保留了在我的电脑上创建的那个venv的副本。
启动虚拟机后,我可以使用/home/user1/myfolder
处的文件启动它,然后运行runner.py
runner.py
是通过/bin/python
的默认python二进制文件执行的,应该是:
做一些事情
将myfolder / myenv复制到/ tmp / myenv(因为它不存在)。
激活它。
最后运行2个Python脚本(像-n或-t这样的参数可以变化),将输出重定向到文本文件output.out
:
./ scritp1.py -n 200 -t 0.01 | ./script2.py> output.out
继续做其他事情,比如对output.out的分析。
我怀疑是在第2步和第3步之间,我不知道如何激活虚拟环境并继续正常执行脚本。
是否可以在Python中使用它?
如果没有,我看到可以让run_program.sh
同时处理第2步和第3步,但我不知道如何处理。
答案 0 :(得分:1)
您无需激活virtualenv
;只使用virtualenv python二进制文件运行脚本就足够了,例如/tmp/myenv/bin/python
。
您可以为shell命令激活virtualenv:
. /tmp/myenv/bin/activate && ./scritp1.py -n 200 -t 0.01 | ./script2.py > output.out
如果./script1.py
使用#!/usr/bin/env python
shebang或同等产品,则可以使用。