是否可以使用带有incron的venvs(虚拟环境)?

时间:2013-05-20 11:50:31

标签: python python-venv

我无法在任何地方看到任何显示如何使用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合作的任何想法?

3 个答案:

答案 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。更简单的方法是轮询目标目录中的文件并在主管下运行我的脚本。