Python crontab和手动运行的不同结果

Python crontab和手动运行的不同结果,python,db2,crontab,Python,Db2,Crontab,我正在运行一个python脚本,将一些数据加载到db2数据库中。然而,我发现了以下模块加载错误: Traceback (most recent call last): File "myscript.py", line 22, in ? import DB2 File "/opt/freeware/lib/python2.3/site-packages/DB2.py", line 12, in ? import _db2 ImportError: Could not loa

我正在运行一个python脚本,将一些数据加载到db2数据库中。然而,我发现了以下模块加载错误:

Traceback (most recent call last):
  File "myscript.py", line 22, in ?
    import DB2
  File "/opt/freeware/lib/python2.3/site-packages/DB2.py", line 12, in ?
    import _db2
ImportError: Could not load module /opt/freeware/lib/python2.3/site-packages/_db2.so.
   Dependent module libdb2.a(shr.o) could not be loaded.
Could not load module libdb2.a(shr.o).
System error: No such file or directory
Could not load module /opt/freeware/lib/python2.3/site-packages/_db2.so.
   Dependent module /opt/freeware/lib/python2.3/site-packages/_db2.so could not be loaded.
以下是我的python模块目录:

[dbadmin@bldr2:/opt/freeware/lib/python2.3/site-packages]# ls -l
total 800
-rw-r--r--    1 root     system         8142 May 30 2008  DB2.py
-rw-r--r--    1 root     system        17133 May 30 2008  DB2.pyc
-rw-r--r--    1 root     system          119 Aug 09 2005  README
-rwxr-xr-x    1 root     system        66550 May 30 2008  _db2.so
drwxr-xr-x    2 root     system          256 Mar 31 2009  logging
-rw-r--r--    1 root     system       307200 Jan 13 15:19 python-modules.tar
这里可能出了什么问题?那么解决办法是什么呢

更新: 我手动重新运行了这个命令,它成功了,没有任何错误。然而,该作业最初是一个crontab条目,如:

18 * * * * myscript.py [parameter_list] >cron_nag.log 2>&1
我粘贴在顶部的日志在这个“cron_nag.log”中。但是当我手动重新运行命令时,错误被清除,不再抱怨模块加载,一切都很顺利


为什么crontab条目和手动运行之间存在差异?我使用了与crontab条目相同的用户
dbadmin
手动运行该命令。它们应该在日志文件中生成相同的内容,不是吗?

尝试强制加载db2概要文件。假设实例位于db2inst1

 18 * * * * . ~db2inst1/sqllib/db2profile ; myscript.py [parameter_list] >cron_nag.log 2>&1
问题是cron没有加载您的.profile,而db2profile是从.profile加载的


另外,如果您创建了另一个shell,那么新的shell将无法保持db2profile或连接。

您是否安装了IBM Data Server客户端(或其他适当的DB2客户端包)?@mustaccio:是的,我有一个命令行工具用作DB2客户端。只要输入
db2
,我就可以连接到db2数据库。因此,它看起来像是python问题,而不是db2问题。尝试强制加载db2概要文件“~db2inst1/sqllib/db2profile”您可以通过运行一些脚本来检查crontab的环境:
*21***python-c“import sys;print sys.path()”>file.txt
。签出
$man 5 crontab
。您可以在crontab中设置变量。例如,您可以指定PYTHONPATH='/path/to/include'猜您是对的,伙计。我再等50分钟来验证结果。尽管如此,我的直觉告诉我你成功了。如果你不想等待,你可以
*/1****python-c“导入DB2;打印'hey!'>”>some_log.txt&2>1