在将服务器计算机升级到 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 并让我们看看。