我有一个名为 runner.py
的 Python 脚本,它需要在 VM 上运行,并且在执行时没有机会安装新的 python 库,因为 Internet 被禁用。
因为我有 VM 的 img,我已经给它 LAN,安装了 virtualenv 并在 /tmp/myenv
中创建了一个 virtualenv。
由于这个 VM 是一个快照,我在它启动时(每 10 分钟)丢失了里面的所有数据,包括临时数据。
我保留了在我的计算机上创建的那个 venv 的副本。
启动 VM 时,我可以使用位于 /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 > 输出.out
继续做其他事情,比如分析 output.out。
我的疑惑在第2步和第3步之间,我不知道如何激活虚拟环境并继续正常执行脚本。
问题
是否可以用 Python 本身来实现?
如果没有,我看到可以制作一个
run_program.sh
来同时处理步骤 2 和 3,但我不知道如何去做。
最佳答案
你不需要激活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 或等价物,它会起作用。
关于python - 在 Python 脚本中激活 virtualenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26562118/