我正在运行一个python脚本来将一些数据加载到db2数据库中。然而,我想出了以下模块加载错误:crontab和手动运行的不同结果
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模块目录:
[[email protected]:/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条目和手动运行之间的区别?我使用相同的用户dbadmin
来手动运行命令,如crontab项所做的那样。他们应该在日志文件中产生相同的内容,不是吗?
您是否安装了IBM Data Server Client(或其他适当的DB2客户端软件包)? – mustaccio
@mustaccio:是的,我有一个命令行工具用作db2客户端。只需键入'db2',我就可以连接到db2数据库。所以它看起来像一个python问题,而不是一个db2问题。 –
Python 2.3是一个非常*旧的版本。任何机会,你可以安装一个新的,如2.7? –