2

我在任何地方都看不到任何显示如何通过 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 一起工作的任何想法?

4

3 回答 3

1

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

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

于 2013-05-20T12:12:34.177 回答
1

您可以将activate您通常在 shell 中键入的内容直接放入您的 python 代码中。如果您的项目被命名A,它是这样的:

activate_this = 'A/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
于 2013-05-20T12:15:26.627 回答
0

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

于 2013-05-21T01:28:55.393 回答