我无法在任何地方看到任何显示如何使用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合作的任何想法?
答案 0 :(得分:1)
编写一个shell脚本,其中包含您通常用于激活虚拟环境并运行程序的所有命令。
然后设置incron以运行shell脚本。
答案 1 :(得分:1)
您可以将通常在shell中键入的activate
直接放入python代码中。如果您的项目名为A
,则它是这样的:
activate_this = 'A/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
答案 2 :(得分:0)
我在进一步调查后决定不使用inotify。更简单的方法是轮询目标目录中的文件并在主管下运行我的脚本。