【问题标题】:Is it possible to use venvs (virtual environments) with incron?是否可以将 venvs(虚拟环境)与 incron 一起使用?
【发布时间】:2013-05-14 23:22:47
【问题描述】:

我在任何地方都看不到任何显示如何通过 incron http://inotify.aiken.cz/ 使用虚拟环境的示例

有人知道这是否可能吗?

更新: 我运行 incrontab -e 然后我添加这一行:

/home/vmail/jobstat.us/submit/new/ IN_CREATE /home/vmail/jobstatuspy3/bin/python3 /home/vmail/mailtounicodetoarchive.py --context=prd

但是,当我尝试从命令行运行相同时,即

/home/vmail/jobstatuspy3/bin/python3 /home/vmail/mailtounicodetoarchive.py --context=prd

上面写着

vmail@mail:~$ /home/vmail/jobstatuspy3/bin/python3 /home/vmail/mailtounicodetoarchive.py --context=prd
Traceback (most recent call last):
  File "/home/vmail/mailtounicodetoarchive.py", line 14, in <module>
    me = singleton.SingleInstance()
NameError: name 'singleton' is not defined

显然上述错误是因为它实际上并没有在venv中执行命令,所以我在venv中安装的tendo模块不起作用。

关于如何让 venvs 与 incron 一起工作的任何想法?

【问题讨论】:

  • 请定义如何通过 incron 使用虚拟环境。否则,一个有效的答案是使用 python3.3 venv 模块或 virtualenv 安装 pyinotify

标签: python python-venv


【解决方案1】:

使用您通常用来激活虚拟环境和运行程序的所有命令编写一个 shell 脚本。

然后设置 incron 来运行 shell 脚本。

【讨论】:

    【解决方案2】:

    您可以将您通常在 shell 中键入的 activate 直接放入您的 python 代码中。如果您的项目名为A,则如下所示:

    activate_this = 'A/bin/activate_this.py'
    execfile(activate_this, dict(__file__=activate_this))
    

    【讨论】:

      【解决方案3】:

      我在进一步调查后决定不使用 inotify。一种更简单的方法是轮询文件的目标目录并在主管下运行我的脚本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-04
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多