【问题标题】:Activating virtualenv in a Python script在 Python 脚本中激活 virtualenv
【发布时间】:2014-10-25 12:00:44
【问题描述】:

我有一个名为 runner.py 的 Python 脚本,它需要在 VM 上运行,在执行时没有机会安装新的 Python 库,因为 Internet 被禁用。

由于我有 VM 的 img,我已经给它 LAN,安装了 virtualenv 并在 /tmp/myenv 创建了一个 virtualenv。 由于此 VM 是一个快照,因此在它启动时(每 10 分钟)我会丢失内部的所有数据,包括 temp。 我保留了在我的计算机上创建的 venv 的副本。

VM 启动后,我可以在/home/user1/myfolder 使用文件启动它,然后它运行runner.py

runner.py 通过/bin/python 的默认python 二进制文件执行,应该:

  1. 做一些事情

  2. 将 myfolder/myenv 复制到 /tmp/myenv(因为它不存在)。

  3. 激活它。

  4. 最后运行 2 个 Python 脚本(参数如 -n 或 -t 可能会有所不同)将输出重定向到文本文件 output.out

    ./scritp1.py -n 200 -t 0.01 | ./script2.py > output.out

  5. 继续做其他事情,比如分析 output.out。

我的疑惑在第2步和第3步之间,不知道如何激活虚拟环境,继续正常执行脚本。

问题

  • 是否可以在 Python 本身中实现?

  • 如果没有,我已经看到可以创建一个run_program.sh 来同时处理第 2 步和第 3 步,但我不知道该怎么做。

【问题讨论】:

  • 如果你在./script1.py./script2.py 中使用#!/tmp/myenv/bin/python shebang 就足够了,也就是说,你可以省略第三步。

标签: python virtual-machine virtualenv


【解决方案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 或等效项,它就可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-02
    • 2011-10-20
    • 2017-12-18
    • 2018-07-11
    • 2015-09-04
    • 2020-01-16
    相关资源
    最近更新 更多