Python“导入 pyodbc”在 cron 任务中不起作用

Python“导入 pyodbc”在 cron 任务中不起作用

在将服务器计算机升级到 Ubuntu 16.04 后,所有通过 cron 启动的 python 程序都会在“import pyodbc”语句时失败。我通过以下方式正常安装了该包

pip3 install pyodbc

如果我创建一个仅包含指令的简单程序'import pyodbc',则从命令行运行它就可以工作:

$ python3 /home/test.py
$

我指示从 cron 运行相同的程序(这里是 crontab 的相关部分):

$ crontab –l
0,5,10,15,20,25,30,35,40,45,50,55 8,10,12-18 * * * python3 /home/test.py 1>>/var/log/python3.log

然后,在日志文件中,我得到:

Traceback (most recent call last):
  File "/home/test.py", line 1, in <module>
    import pyodbc
ImportError: No module named 'pyodbc'

如果我从“主” cron 或从用户 crontab 运行,结果是相同的。我该怎么做才能解决这个问题?

答案1

好的,感谢 Jacob Vlijm 的建议,我终于找到了解决方案:软件包“ pyodbc”已安装在 user1 ( /home/user1/.local/lib/python3.5/site-packages/) 下。当我以 user1 身份登录终端时,程序可以找到该模块。使用cron,我通常在另一个用户 ( ) 下运行程序user2

这就是问题所在。通过 user1 在 cron 中运行,一切正常。我要调查的最后一个问题是,为什么命令 ' pip3 install pyodbc==3.0.10' 使包对 user1 可用,而不是对所有用户可用。

答案2

好的,让你的程序像这样

#!/usr/bin/env python3
import pyodbc

授予可执行权限,例如

chmod +x filename.py

现在将其添加为 cron 并让我们看看。

相关内容